c语言期中考试 急!!!!!!!正在考 能答几个都行

请指出两个循环语句的功能,并比较两者的优劣
……
int odd=0,even=0,n=1;
while(n<1000)
{
odd+=n;
even+=n+1;
n=n+2;
}
……
第二个
……
int odd=0,even=0,n;
for(n=1;n<=1000;n++)
{
if(n%2==0)even+=n;
else odd+=n;
}

……
请写出这个程序的功能,指出存在的问题,并提供更好的版本。
#include<stdio.h>

void main()
{
int score=getchar();
if(score=='A')printf("优\n");
if(score=='B')printf("良\n");
if(score=='C')printf("中\n");
}
张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第二得8分,依次类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?
提示:设计二维数组存储不同家庭不同孩子的各自得分,利用循环反复尝试,得出符合条件下孩子们的各自得分,看得分为1分的那个孩子是哪家的,输出结果。
谢谢啦 急 又追加
将已经学习过的统计行数、字节、字符、词数的四个程序,整合为一个程序。
实现通过一个程序就能同时统计出标准输入中的文本行数、字节、字符和词数信息
#include <stdio.h>
void main ( )
{
int lines=0, ch ;
ch = getchar ( );
while ( ch!=EOF )
{
if ( ch==‘\n’ ) lines ++;
ch = getchar ( );
}
printf (“您一共输入了%d行。\n”, lines) ;
}

#include <stdio.h>

void main()
{
int char_sum=0,byte_sum=0,ch;

printf("请输入若干字符(以“ctrl+Z”键结束):\n"); //进行输入提醒
while((ch=getchar())!=EOF)
{
byte_sum++;
if(ch>=128) //进行是否为双字节字符的判断
{
getchar();byte_sum++; //是双字节字符,必须再从屏幕上读入一个字符,字节数++
}
char_sum++; //字符数正常统计
}
printf("您的文档一共有%d个字符。\n",char_sum);
printf("您的文档一共有%d个字节。\n",byte_sum);
}

一 两个循环都是计算0到1000(不包括0和1000)之间的奇数和偶数和
while循环计数n的递增基数为2,for为1,很显然while循环执行的次数少一些。
在基偶判断上,while循环利用 偶数=奇数+1 的规则,不执行求余运算,显然效率上高些,但是他必须确定初值n

二程序的问题在于不管score输入什么,程序都会比较三次,并且对(abc)之外输入没有做处理
int score=getchar();
switch(score)
{
case 'A':
{
printf("优\n");
}break;
case 'B':
{
printf("良\n");
}break;
case 'C':
{
printf("中\n");
}break;
default:
printf("您的输入有误\n");
break;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-11
第一个:odd是从0到1000之间所有偶数的和
even是从1到1000之间所有奇数的和
第二个:even是能被2整除的数的和
odd是不能被2整除的数的和
第一个odd和even都要从1加到1000
第二个只需要加一次较简单追问

别的题呢?快啊 急死了 呜呜

追答

#include
int score[4][4];
int main()
{
int i,j,k,who;
score[1][1]=7; /*按已知条件进行初始化:score[1]:张家三个孩子的得分*/
score[2][1]=8; /*score[2]:王家三个孩子的得分*/
score[3][1]=9; /*李家三个孩子的得分*/
for(i=4;i<6;i++) /*i:张家孩子在4到6分段可能的分数*/
for(j=4;j<7;j++) /*j:王家孩子在4到6分段可能的分数*/
for(k=4;i!=j&&k<7;k++) /*k:李家孩子在4到6分段可能的分数*/
if(k!=i&&k!=j&&15-i-score[1][1]!=15-j-score[2][1] /*分数不能并列*/
&&15-i-score[1][1]!=15-k-score[3][1]
&&15-j-score[2][1]!=15-k-score[3][1])
{
score[1][2]=i;score[1][3]=15-i-7; /*将满足条件的结果记入数组*/
score[2][2]=j;score[2][3]=15-j-8;
score[3][2]=k;score[3][3]=15-k-9;
}
for(who=0,i=1;i<=3;i++,printf("\n"))
for(j=1;j<=3;j++)
{
printf("%d",score[i][j]); /*输出各家孩子的得分情况*/
if(score[i][j]==1)who=i; /*记录最后一名的家庭序号*/
}
if(who==1) /*输出最后判断的结果*/
printf("The last one arrived to end is a child from family Zhang.\n");
else if(who==2)
printf("The last one arrived to end is a child from family Wang.\n");
else printf("The last one arrived to end is a child from family Li.\n");
}

*运行结果
7 5 3
8 6 1
9 4 2
The last one arrived to end is a child from family Wang.
(获得最后一名的是王家的孩子。

本回答被提问者和网友采纳
第2个回答  2011-10-31
当然是第二个程序好啦!运行步骤少,速度快!追问

别的题呢

第3个回答  2011-10-31
程序的功能是分别求1--1000之间的奇数和偶数的和追问

接着来

追答

第二题
void main()
{int score=getchar();
switch(score){
case 'A' :printf("优\n");
case 'B' :printf("良\n");
case 'C' :printf("中\n");

}

}

追问

貌似不对

追答

怎么?

追问

输入A没反应

追答

第二题
void main()
{int score=getchar();
switch(score){
case 'A' :printf("优\n");break;
case 'B' :printf("良\n");break;
case 'C' :printf("中\n");break;

}

}

追问

第二题那个原来的程序有什么问题?

追答

那个程序没什么问题

追问

可是这个是试题啊 会不会考虑到小写ABC时的问题

相似回答