C语言程序两道题目

C语言程序两道题目,第1张

第一题:

输出结果如下

**3##4

**5

第一次循环,x=3,x%2=3%2=1,非0即真,因此输出格式为**%d,也就是**3

第二次循环,x=4,x%2=4%2=0,结果false,因此输出格式为##%d\n,也就是##4并换行

第三次循环,x=5,x%2=5%2=1,非0即真,因此输出格式为**%d,也就是**5,至此循环结束。

第二题:闹扮洞答案i=0,j=4,k=6

初始化完毕,a=10,b=c=d=5,i=j=k=0

for(a>b++b)i++

没有初始条件,当a=b时结束循环,a与b之间相差5,因此会执行5次循环液枯,也就是i有5次自加1的机会,因此i=5,因为在for语句中++b和a>b属于不同两条语句,因此++b的自增和b++的缺慧自增效果是一样的。

while(a>++c)j++

当a大于C时结束循环,在此语句中++c和判断语句在一条语句中,因此实际上这语句相当于while(a>(c+1)){j++c=c+1},所以a和c+1之间相差4,有4次机会循环,因此j=4,如果这里是c++,那么相当于while(a>c){j++c=c+1},结果就变成5了

do

k++while(a>d++)这里不管条件如何,先进行一次运算,因此实际上对于条件判断来说,k相当于初始=1,而之后的while(a>d++)和我上面分析的一样,这句话相当于do{k++d=d+1}

while(a>(d-1)) 这里判断内变成d-1,是因为do

while语句是不管条件先执行的缘故,执行后d=6,所以a和(d-1)之间相差5,加上一开始k被执行为1,因此最后结果k=6

#include "stdio.h"

int main(int argc,char *argv[]){

char ch

int uc,lc,di,oh

uc=lc=di=oh=0

printf("Please enter a string('q'/'Q' end)...\n")

while(scanf(" %c",&ch)==1){

if(ch>肆粗='A' && ch<='Z')

uc++

else if(ch>='a' && ch<='z')

lc++

else if(ch>='0' && ch<='9')

di++

else

oh++

if(ch=='q' || ch=='Q'陵袜)

break

}

printf("Uppercase:\t%d\nLowercase:\t%d\n  Numbers:\t%d\n    Other:\t%d\n",uc,lc,di,oh)

return 0

}

运行尺雹激样例:

#include<stdio.h>

#include<string.h>

#include<malloc.h>

typedef struct stu //一个学生的档案

{

char num[20]//学号

char name[20]//姓名

float score[5]//成大裂绩,前三门是单科成绩,第四个是总分,最后一个是平均分

}student

student s[10]//所有学生的信息

void main()

{

void init()//初始化函数申明

void sort()//排序函数申明

void print()//输出函数申明

init()

sort()

print()

}

void init()//初始化所有学生的档案

{

int i,j

for(i=0i<10i++) //逐个键入学生的信息

{

printf("请输入一学生的学号:")

scanf("%s",s[i].num)

printf("请输入该学生的姓名:"锋亏)

scanf("%s",s[i].name)

printf("请输入该学生的三门成绩:")

s[i].score[3]=0

for(j=0j<3j++)

{

scanf("%f",&s[i].score[j])

s[i].score[3]+=s[i].score[j]//求总分

}

s[i].score[4]=s[i].score[3]/3//求平均分

}

printf("学生档案建立成功!\n")

}

void sort()

{

int i,j,k

char str[20]

float temp

for(i=0i<9i++) //主循环,进行排名

for(j=i+1j<10j++)

if(s[j].score[3]>s[i].score[3])

{

strcpy(str,s[i].num)//交换学号

strcpy(s[i].num,s[j].num)

strcpy(s[j].num,str)

strcpy(str,s[i].name)//交换姓名

strcpy(s[i].name,s[j].name)

strcpy(s[j].name,str)

for(k=0k<5k++) //交换成绩

{

temp=s[i].score[k]

s[i].score[k]=s[j].score[k]

s[j].score[k]=temp

}

}

}

void print()

{

int i

for(i=0i<滚基闭10i++)

printf("%s %s %.1f %.1f %.1f %.1f %.1f\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4]


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12219782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存