» 關(guān)于C語言,有懂的幫我解決一下問題吧
晚上奮斗了一晚上C語言的編程,發(fā)現(xiàn)C語言相當(dāng)?shù)牟┐缶,上大學(xué)沒有學(xué)過,果斷就應(yīng)該去學(xué)學(xué),現(xiàn)在工作了好幾年,突然寫點程序,本來想著很簡單的事情,結(jié)果實際操作起來,我也只能對自己的水平進(jìn)行呵呵了,水區(qū)高人這么多還望多指點指點,在下感激不盡……以下是題目……
所有題目都要使用調(diào)用函數(shù)
要求:
1、使用多個文件,即主函數(shù)和各個函數(shù)分別保存在不同的.c文件中,在頭文件進(jìn)行函數(shù)原型聲明
2、讀入一篇英語文檔,對其進(jìn)行字母頻率分析,不區(qū)分大小寫,按使用頻率從大到小輸出字母(小寫)和使用頻率。
主要技術(shù)技術(shù)問題的描述:
定義一個長度為26的int數(shù)組存放所統(tǒng)計的各個字母的使用頻率
在統(tǒng)計字母使用頻率時,不能用IF或者switch語句,利用字母的ASCII碼與數(shù)組元素下標(biāo)之間的關(guān)系來求得
按使用頻率從大到小進(jìn)行排序,使用指針數(shù)組。
第一小題
程序運行時,提醒用戶書屋四則運算表達(dá)式(表達(dá)式最多三個運算符號,數(shù)據(jù)范圍1-100的整數(shù),輸入結(jié)束后程序自動出答案
例如:
輸入:13-10+5/8
輸出3.625
第二小題
使用多個文件,即主函數(shù)和各個函數(shù)分別保存在不同的.c文件中,在頭文件進(jìn)行函數(shù)原型聲明
在程序中增加自動出題及自動批卷功能
不限定運算符個數(shù)
允許括號運算的存在
輸入一個由多個單詞組成的句子,長度不超過200個字符,頭字母小寫變大寫
我在發(fā)!
例如:
輸入:hi jack,welcome to china.
輸出:Hi Jack,Welcome To China.
要求讀入一篇英語作文,對所有字母的開頭變成大寫。
利用空格和標(biāo)點符號區(qū)分單詞
不使用數(shù)組利用指針來時間
使用多個文件,即主函數(shù)和各個函數(shù)分別保存在不同的.c文件中,在頭文件進(jìn)行函數(shù)原型聲明
為統(tǒng)計整數(shù)的位數(shù),輸入一個不包括空格的由數(shù)字組成的整數(shù),長度不超過五位。統(tǒng)計這個整數(shù)的位數(shù),然后按數(shù)序輸出它的各個數(shù)字,再逆排序輸出
例如:
輸入56439
輸出:5位數(shù) 5,6,4,3,9 ; 9,3,4,6,5
要求主函數(shù)控制輸入、函數(shù)調(diào)用和輸出;實現(xiàn)任意數(shù)的整數(shù)操作
使用多個文件,即主函數(shù)和各個函數(shù)分別保存在不同的.c文件中,在頭文件進(jìn)行函數(shù)原型聲明
為統(tǒng)計整數(shù)位數(shù),定義一個int數(shù)組存放所統(tǒng)計的整數(shù)位數(shù)
運用模塊運算提取整數(shù)各個數(shù)位上的數(shù)字
網(wǎng)友評論2013-07-06 23:51
第一個程序經(jīng)過百度,初步寫出來了,哪里不好,也請指點一下
// 11929108_QianBeilei_01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
void sort(char *a, int *sum)
{
int i, j, k, temp1, temp2;
for (i=0; i<26; i++)
{
for (j=i+1; j<26; j++)
{
if (sum > sum)
{
k = j;
temp1 = a;
temp2 = sum;
sum = sum;
sum = temp2;
a = a;
a = temp1;
}
}
}
}
void txt(char c)
{
FILE *fp;
fp = fopen ("e:\\qqq.txt","r");
int n=0;
char m;
while (!feof(fp))
{
fscanf (fp, "%c", &m);
c = m;
n++;
}
}
void main()
{
int r;
char c;
int sum, i, j;
char a;
printf("1:Enter English sentence.\n2:Importing a .txt.\n");
scanf("%d",&r);
if(r==1)
scanf("%s",&c);
else
txt(c);
for (i=0;i<26;i++)
{
a = i;
sum = 0;
}
for (i=0; c!='\0'; i++)
{
if (c>='A' && c<='Z')
c += 32;
sum-'a']++;
}
sort(a,sum);
for (j=0; j<26; j++)
{
printf ("%c\t", a+'a');
printf ("%d", sum);
printf ("\n");
}
}
網(wǎng)友評論2013-07-06 23:52
剩下的雖然寫了一點,不過完全拿不出手了……
網(wǎng)友評論2013-07-06 23:56
樓主 這個不如去baidu發(fā)點賞金來的快啊
而且第一題你寫的思想好像跟要求略微不符合 應(yīng)該是先統(tǒng)一大小寫(例如大寫) 然后用 字符-65 再用數(shù)組對應(yīng)下標(biāo)的元素計數(shù) 最后再排序應(yīng)該才對
網(wǎng)友評論2013-07-06 23:59
第一題不讓用if?
網(wǎng)友評論2013-07-07 00:00
我草還好今年重修把C語言過了,
沒事真別學(xué)這個,就現(xiàn)在這基礎(chǔ),離編出有意義的程序遠(yuǎn)著呢
網(wǎng)友評論2013-07-07 00:00
這樣么,我還說水區(qū)眾比較靠譜,百度不靠譜……
網(wǎng)友評論2013-07-07 00:20
Reply Post by 眾人叫我晚飯哥 (2013-07-07 00:00):
我草還好今年重修把C語言過了,
沒事真別學(xué)這個,就現(xiàn)在這基礎(chǔ),離編出有意義的程序遠(yuǎn)著呢
真心覺得"有意義"的程序大部分都是C編的...
網(wǎng)友評論2013-07-07 00:37
第一題不讓用if,你用了。
這樣來設(shè)計,假設(shè)都是小寫字母(大寫的操作類似,不過要多幾個步驟),那么你先設(shè)置一個int aaa,for一下都先等于0,然后對于字符串的每一個字符,減去字符’a',得到x,然后aaa+1,重復(fù)完成整個字符串,字頻就是aaa的每個值。
大概就是這樣,爪機沒法多打。
如果是混編大小寫的字符,就要多考慮一下他們和字符'a'在ascii碼表中的位置的數(shù)值關(guān)系。
網(wǎng)友評論2013-07-07 00:45
第一題 char和int是可以減的,你先求出所有字符的使用頻率,大寫'A' 是65,如果讀入的是c,就寫成類似(array)++的形式就行,非常簡潔
第二題最復(fù)雜,涉及棧和中后綴表達(dá)式轉(zhuǎn)換,一時說不清楚,本科生水平能寫出來的算高手了。
第三題簡單,遍歷字符串,空格后面一個字符轉(zhuǎn)大寫,考查指針的自增用法,水題。
第四題 倒序輸出就是除10取余,每一位保存到string里,再用makereverse反轉(zhuǎn)一下就是正序
網(wǎng)友評論2013-07-07 01:06
第二題用逆波蘭式和棧操作吧
網(wǎng)友評論2013-07-07 07:36