1.
#include<stdio.?h>
void?main ()
{
int?k=10000;
do
{
k++;
printf?(“%d\n",k)?;
}while?(k>10000);//不是死循環,因為%d有范圍,超限后為負數,所以退出循環
2.
#include<stdio.?h>
void?main ()
{
int?s=36;
while(s);//因為有;是死循環
--s;
printf("%d\n",s);
}
3.執行語句:?for?(?i =1;i+ +<4:):后,變量?i?的值是
?A?.3? ? B?.4? ? ?C. 5? ? D.不定?
4.char?h ,*?s?=&?h?:可將字符?A?通過指針存入變量?h?中的語句是
?A?.*?s?=?A?;
?B?.*?s ='?A?';
?C?.?s =?A?;
?D?.?s ='?A?';
5.若有說明:?int?*?p?,?m?=5,?n?;以下程序段正確的是
?A?.?p =&?n?;
?scanf?("%?d?",&?p?);
?B?.?p?=&?n?;
?scanf?("%?d?",*p?);
?C?.?scanf?("%?d?",&?n?);
*?p?=?n?;
?D?.?p?=&?n?;
*?p?=?m?;
6.有以下程序
main()
{
int?i?=1,?j?=1,?k?=2;
?if?((?j?++||k?++)&&?i ++)
?printf?("%?d?,%?d?,%?d\n?",?i ,?j ,k?);
}
執行后輸出結果是(
?A?.1,1,2
C. 2,2,2
?B?.2,2,1?
D?.2,2,3
7.已知變量?a?被定義為?int?型變量,以下定義并初始化指針變量?p?的語句中正確的
A.int p=a;
B.int *p=*a;
C.int p=&a;
D.int *p=&a;
8.若有下列定義,則對?a?數組元素地址的正確引用是
?int?a?[5],*?p?=?a?;
?A?.*(?p?+5)
C. a?+2
B.*p+2
D.*&a[5]
9.若有定義語句:?char?s?[10]="1234567\0\0";,則?strlen?(?s?)的值是()
?A?.7? ? B.8? ? C.9? ? ?D.10
10.以下敘述中錯誤的是(.)
?A?.用戶定義的函數中可以沒有?return?語句
?B?.用戶定義的函數中可以有多個?return?語句,以便可以調用一次返回多個函
數值
?C?.用戶定義的函數中若沒有?return?語句,則應當定義函數為?void?類型
?D?.函數的?return?語句中可以沒有表達式
答案:CBDC DCAB
3,i++<4 已經加了,所以為5
4.A和C字符A沒加引號,D。s為地址
5.A和B沒有n的值? ?cC,沒有初始化,不能指向n
6.或運算,左邊為真時,右邊不運行
7.注意定義并初始化,所以D對
8.A和D超限,B,*p指內容,加2,
10.return語句一次只能返回一個值
11.當運行以下程序時,程序的輸出結果足:
void fun(int *y)
{
printf("*y= %d\n",*y);
*y=10;
printf("*y=%d\n",*y);
}
void main()
{
int x=20;
printf("x=%d\n",x);
fun(&x);
printf("x= %d\n",x);
}
x=20
*y=20
*y=10
x=10
fun(&x)是對xs的值進行了修改
12.
#include <stdio.h>
struct st
{
int x:
int *y;
}*p;
int dt[4]={ 10,20,30,40};
struct st aa[4]= {50,&dt[0],60,&dt[ 1],70,&dt[2],80,&dt[3]};
}void main()
{
P=aa;
printf("%d\n",++p->x);
printf("%d\n",(++p)->x);
print("%d、n",++(*p->y);
}
51
60
21
本題的優先級為()>? ->? >? ?++? ?>? ?*
++p->x等價于++(p->x)
++(*p->y)等價于? ++(*(p->y))
13.函數?fun?的功能是:將形參?n?所指變量中,個位上為偶數的數去除,剩余的數按原來從高位到低位的順序組成一個新的數,并通過形參指針?n?傳回所指變量。例如,輸入一個數:27638496,新的數:為739。
# inelude < stdio . h >void fun ( unsigned long * n)
{unsigned long x =0, i ;int t ;i =1;while (*n)
{t =* n %________;if ( t %2!=_________);
{
x = x + t * i ;i = i *10;
}
*n=*n/10;
}
*n=___________;
}void main()
{unsigned long n =-1;while ( n >99999999|| n <0)
{
printf (" Please input (0< n <100000000):");scanf ("% ld ",& n );
}fun (& n );printf (" nThe result is :% ld ' in ". n );
}
答案:1.10? ? ? 2.0? ? ? 3.x
14.下面程序的功能是刪除字符串?s?中的空格。
?
# include " stdio . h "void main ()
{char * s =" Beijing ligong daxue ";int i , j ;for ( i = j =0; s [ i ]!='\0'; i ++)
{if ( s [ i ]!='')
________________else
_________________s [ j] =' O ';
printf("%s",s);
}
答案:s[j++]=s[i];? ? ? ? ? s[j]=s[i];
?