A.原地踏步
B.没有用
C.让信号灯闪烁
D.延时
第1题
当执行以下程序段时,( )。
x=-l:
do{x=x*x;)while(!x);
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统将提示有语法错误
【我提交的答案】: C |
【参考答案与解析】: 正确答案:A |
do-wlfile的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x =1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。
!x是什么
第2题
请补充fun函数,该函数的功能是:将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]
#include <stdio.h>
#include <stdlib.h>
#define N 5
typedef Struct node {
int data;
struct node *next;
}NODE;
void fun(NODE *h)
{
NODE *p, *q, *r;
p= (1) ;
if ( (2) ) return;
q=P->next;
P->next=NULL;
while (q)
{
r=q->next;
q->next=p;
p=q;
q= (3) ;
}
h->next=p;
}
NODE *creatlis (int a[])
{
NODE *h, *p, *q; int i;
h= (NODE *)malloc(sizeof(NODE));
h>next=NULL:
for(i=0; i<N; i++)
{
q=(NODE *)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL)
h->next=p=q;
else
{
p->next=q; p=q;
}
}
return h;
}
void ou list(NODE *h)
{
NODE *p;
p=h->next;
if(p==NULL)
printf("The list is NULL!\n");
else
{
printf("\nHead ");
do
{
printf("->%d", p->data); p=p->next;
}while(p!=NULL);
printf("->End\n");
}
}
main()
{
NODE *head;
int a[N]=(2, 4, 6, 8, 10);
head=creatlist(a);
printf('\nThe original list:\n");
outlist(head);
fun(head);
printf("\nThe list after inverting :\n");
outlist(head);}
【我提交的答案】:
【参考答案分析】:
[1] h->next [2] D==NULL [3] r[解析] 填空1:题目明确交代是一个带头结点的单向链表,因此,在函数fun中应该从单向链表的第二个结点开始放入数据,头结点不算,所以指针变量p应该指向h->next。 填空2:这是一个必需的判断语句,即当第一个单元为空时,返回。所以,此处应该填p==NULL。 填空3:链表中的数据交换和数组元素交换的规则是一样的,即使用一个辅助变量进行交换,所以这里应该填r。不同的是,链表是通过指针的移动实现对每个结点的访问。
这道题我不会,请求专家帮忙解答。谢谢
第3题
str是一个由数字和‘,:母字符组成的字符串,由变量num传人字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如,str="abc3de987f9621",结果为:3987621。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define M 80
int bb[M];
int proc(char str[],int bb[],int num)
{
int i,n=0;
for(i=0;i<num;i++)
{
if(【1】)
{
bb[n]=【2】:
n++:
}
}
return 【3】 ;
}
void main
{
char str[M];
int mum=0,n,i;
printf("Enter a strin9:\n");
gets(str);
while(str[num])
num++:
n=proc(str,bb,num);
printf("\nbb=");
for(i=0;i<n;i++)
printf("%d",bb[i]);
}
【我提交的答案】:
【参考答案分析】:
【1】str[i]>='0'&&str[i]<='9 '
【2】str[i]-'0'
【3】n
【解析】题目中要求把字箱串str中的数字字符转换成数字并存放到整型数组bb中。首先应判断字符串str中每个字符是否为数字字符,因此【1】填“str[i]>=' 0 ' &&str[i]<='9'”;将每一个数字字符转化为数字放在整型数组bb中,因此【2】填“str[i]-'0'”;由函数proc可知,变量n中存放的是整型数组bb中元素的个数,最后要返回到主函数中,因此【3】填“n”。
数字字符和数字有什么区别吗,为什么还要减去一个48
第4题
请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<conio.h>
int m;
void fun(char *s)
{
int i=0,j=0;
char *p=s;
while(*(p+i))
{
if(*(p+i)>=′A′&&*(p+i)<=′Z′)
{
(1) ;
}
(2) ;
}
s[j]=′\0′;
(3) ;
}
main()
{
char str[80];
clrscr();
printf("\nEnter a string:");
gets(str);
printf("\n\nThe string is:\%s\n",str);
fun(str);
printf("\n\nThe string of changing
is:\%s\n",str);
printf("\n\nThe length of changed string
is:\%d\n",m);
}
第5题
【单选题】下列程序输出的结果是什么()
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,18,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
第9题
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!