电大C语言程序设计A 求答案! 急!!!!

1.
一、
目的:

会使用流程控制语句和数组,编写出进行数据处理的程序,并能够上机调试和运行。

二、
内容和步骤:

1、利用第一次作业所建立的工作区,或另建一个新工作区;

2、在工作区下建立一个内容为空的、进行控制台应用的工程项目,假定项目名用“xkzy2”表示;

3、编写一个C语言程序,要求实现的功能为:从键盘上输入一行带有英文字母的任意字符串,假定该字符串的长度不超过50,试统计出该串中所包含的每一种字母a、b、c、d的个数(字母大小写等效),并分行依次输出,每行的输出格式为“字母:个数”,如假定字母a的个数为3,则输出格式为“a:
3”。提示:请在for循环内使用switch语句分别进行字母个数的统计。

4、在上述项目内建立一个能够实现上述功能的、名称为“main.c”的程序文件,并输入、编译、连接和运行此C语言程序文件。

三、
提交内容

你所编写出的程序,以及在程序执行时,其输出屏幕上呈现的所有内容。(请将内容保存到文本文件,并压缩成一个压缩包上传。)

提示:答题框内不能输入超过2000个字符。如果超过2000字符,请使用附件上传功能。

第1个回答  推荐于2017-09-20
#include "stdio.h"
#include "string.h"
void main()
{
unsigned char input_char[60],i;
unsigned char number[26][2]={0};
unsigned char lengthofinput=0;
unsigned char legalflag=0;
while(!legalflag) {
printf("请连续输入字母(不区分大小写),不大于50,输入数字和其他符号无效,以回车结束\n");
scanf("%s",input_char);
lengthofinput=strlen(input_char);
if( lengthofinput<=50) legalflag=1;
if(legalflag)
{
for(i=0;i<lengthofinput;i++){
if(((input_char[i])<0x41)||(((input_char[i])>0x5A)&&((input_char[i])<0x61))||((input_char[i])>0x7A))
{ legalflag=0;break;}
if(legalflag)
{
switch (input_char[i])
{
case 0x41:case 0x61: number[0][0]='a';number[0][1]++; break;
case 0x42:case 0x62: number[1][0]='b';number[1][1]++; break;
case 0x43:case 0x63: number[2][0]='c';number[2][1]++; break;
case 0x44:case 0x64: number[3][0]='d';number[3][1]++; break;
case 0x45:case 0x65: number[4][0]='e';number[4][1]++; break;
case 0x46:case 0x66: number[5][0]='f' ;number[5][1]++; break;
case 0x47:case 0x67: number[6][0]='g';number[6][1]++; break;
case 0x48:case 0x68: number[7][0]='h';number[7][1]++; break;
case 0x49:case 0x69: number[8][0]='i';number[8][1]++; break;
case 0x4A:case 0x6A: number[9][0]='j';number[9][1]++; break;
case 0x4B:case 0x6B: number[10][0]='k';number[10][1]++; break;
case 0x4C:case 0x6C: number[11][0]='l';number[11][1]++; break;
case 0x4D:case 0x6D: number[12][0]='m';number[12][1]++; break;
case 0x4E:case 0x6E: number[13][0]='n';number[13][1]++; break;
case 0x4F:case 0x6F: number[14][0]='o';number[14][1]++; break;
case 0x50:case 0x70: number[15][0]='p';number[15][1]++; break;
case 0x51:case 0x71: number[16][0]='q';number[16][1]++; break;
case 0x52:case 0x72: number[17][0]='r';number[17][1]++; break;
case 0x53:case 0x73: number[18][0]='s';number[18][1]++; break;
case 0x54:case 0x74: number[19][0]='t';number[19][1]++; break;
case 0x55:case 0x75: number[20][0]='u';number[20][1]++; break;
case 0x56:case 0x76: number[21][0]='v';number[21][1]++; break;
case 0x57:case 0x77: number[22][0]='w';number[22][1]++; break;
case 0x58:case 0x78: number[23][0]='x';number[23][1]++; break;
case 0x59:case 0x79: number[24][0]='y';number[24][1]++; break;
case 0x5A:case 0x7A: number[25][0]='z';number[25][1]++; break;
default: break;
}
}}
if(legalflag){
for (i=0;i<26;i++)
if(number[i][0]) {printf("%c : %d\n",number[i][0],number[i][1]); number[i][0]=0;number[i][1]=0;}
legalflag=0;
}

}
//0x41~5A,0x61~7A;
}

}

//如果输入过程中含有空格,会被当作两组输入处理。本回答被提问者和网友采纳
第2个回答  2014-11-27
来是是我想试试的,但是这个时间 太短了来不及追问

亲 我还有几天时间!可以帮帮我吗

追答

#include

#define NUM 50

void staticsChar();

int main(int argc, const char * argv[])
{
//统计字符
staticsChar();
return 0;
}

void staticsChar()
{
int nInput,nCount=0;
char ch[NUM];
while (1) {
nInput=getchar();
if(nInput=='\n' || nCount>=NUM){
break;
}
ch[nCount++]=nInput;
}

int a=0;int b=0;int c=0;int d=0;int e=0;int other=0;

for(int j=0;j<nCount;j++){
char temp=ch[j];
if(temp=='a'){a++;}
else if(temp=='b'){b++;}
else if(temp=='c'){c++;}
else if(temp=='d'){d++;}
else if(temp=='e'){e++;}
else{other++;}
}
printf("a=%d,b=%d,c=%d,d=%d,e=%d,other=%d\n",a,b,c,d,e,other);
}

以上代码通过测试,当然有些地方你还需要修改,如输入结果,你要的是a3,我这里的格式是a=3,这个很简单的,还有判断,我这里只判断了a-e的,你把其余的加上即可!!good luck!!

第3个回答  2014-11-27
我能帮帮你 有个一两天就可以了
相似回答