
输出结果如下
**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]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)