二、第2题中,C语言对其数据在内存中所占用的实际字节数,随着程序中声明的数据类型以及数据的多少而变化,C语言本身并没有明确规定。这题应该选F。
三、第3题,C语言中强制类型转换,仅对转换的语句有效,而不会改变所转换变量的原有数据类型,这是正确的,应该选T。
四、第4题,i=8,j=10printf("%d,%d,%d,%d\n",i,j,++i,j++)实际上是一个程序执行类题目,执行这一句时,先取得ij变量的值,其中有一个++i(先自增),一个j++(后自增),先自增的i先加上1,也就是i=8+1=9,而后自增的j在打印之后再加1,所以打印时仍是j=10。所以打印出来是:9 10 9 10。这是正确的。
五、第5题“C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上原样显示”的说法是错误的。举一个例子就可以了:print("%d",8)是打印不出来%d的,它只能打印出来8。所以它是错的。
六、第7题,设x、t均为int型变量,则执行语句"x = 10t = x &&x >10"后,t的值为,这个题目好似没有写完,成了填空题了,现在来看计算过程,t = x &&x >10,根据计算的优先级,>号是6级,&&是11级,先计算x >10,因为x=10,故x>10是不成立的,所以它的值是0,第二步再计算x &&0=10 &&0=0。t的值最后应该是0。
希望对你有所帮助。
1. 第一题
int i=1,j=0
while(i++<3)
{ j++ }
答案:j=2,i=4
解释:i++ 加号在i 后面,属于 后加加,就是先求表达式的结果,然后再加1.
第1次循环:初始值i=1 j=0,表达式 i<3 计算结果为TRUE, 执行j++和i+1 ,
执行结果: i=2,j=1
第2次循环:i=2, 表达式i<3 计算结果为TRUE, 执行j++和 i+1,执行结果 :i=3,j=2
第2次循环:i=3, 表达式i<3 计算结果为FALSE,不执行 j++ 但是仍然执行i+1,
执 行结果:i=4,j=2
第二题: 答案:j=3,i=4
do{ j++ } while(i++<3)此语句 是先循环 再检查条件 和上一题不同。
初始化值:int i=1,j=0
第1次循环:先执行j++, 然后 求表达式 i<3 ,为TRUE,最后i+1,执行结果:j=1,i=2
第2次循环:先执行j++, 然后 求表达式 i<3 ,为TRUE,最后i+1,执行结果:j=2,i=3
第3次循环:先执行j++, 然后 求表达式 i<3 ,为FALSE,最后i+1,执行结果:j=3,i=4
程序测试结果:
希望我的回答对你的学习有所帮助,欢迎继续提问,很高兴和你一起讨论和学习C/C++
#include <stdio.h>struct student
{
int number
char name[20]
int age
char address[50]
float class1grade
float class2grade
float class3grade
float avegrade
char ranklevel
int rank
}
student schoolstu[100]
void input(int n) //学生人数n。
{
for(int i=0i<ni++)
{
scanf("%d%s%d%s",&schoolstu[i].number,schoolstu[i].name,&schoolstu[i].age,schoolstu[i].address)
scanf("%f%f%f",&schoolstu[i].class1grade,&schoolstu[i].class2grade,&schoolstu[i].class3grade)
}
}
void average(int n)
{
for(int i=0i<ni++)
{
schoolstu[i].avegrade=(schoolstu[i].class1grade+schoolstu[i].class2grade+schoolstu[i].class3grade)/3
}
}
void gradeclass(int n)
{
for(int i=0i<ni++)
{
if(schoolstu[i].avegrade>=90) schoolstu[i].ranklevel = 'A'
else if(schoolstu[i].avegrade>=80 &&schoolstu[i].avegrade<90) schoolstu[i].ranklevel = 'B'
else if(schoolstu[i].avegrade>=70 &&schoolstu[i].avegrade<80) schoolstu[i].ranklevel = 'C'
else if(schoolstu[i].avegrade>=60 &&schoolstu[i].avegrade<70) schoolstu[i].ranklevel = 'D'
else schoolstu[i].ranklevel = 'E'
}
}
void rank(int n)
{
int temp=1
for(int i=0i<ni++)
{
for(int j=0j<nj++)
{
if(schoolstu[i].avegrade<schoolstu[j].avegrade)
temp++
}
schoolstu[i].rank = temp
}
}
void print(int n)
{
for(int i=0i<ni++)
{
printf("%d %s %d %s ",schoolstu[i].number,schoolstu[i].name,schoolstu[i].age,schoolstu[i].address)
printf("%f %f %f %f ",schoolstu[i].class1grade,schoolstu[i].class2grade,schoolstu[i].class3grade,schoolstu[i].avegrade)
printf("%c %d\n",schoolstu[i].ranklevel,schoolstu[i].rank)
}
}
int main()
{
int n=0
scanf("%d",&n)
input(n)
average(n)
gradeclass(n)
rank(n)
print(n)
return 0
}