C语言基本问题有哪些?

Python015

C语言基本问题有哪些?,第1张

一、C语言规定总是从main()开始执行的(这个函数也叫“主函数”)。因此,你发来的题目中的(1、6、8)叙述都是错误的,都应该选择F。

二、第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

}