当前位置:首页 » 编程语言 » c语言ga选数题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言ga选数题

发布时间: 2022-07-15 15:50:01

1. c语言选择题

C正确,选C。因为按C的规则,基本数据类型由低到高是char<int<long<float<double,再按表达式中有不同类型时低类型自动向高类型转换的规则,i*(j-k)中k的类型最高,最后就是k的类型。

2. 请帮我做这几道C语言选择题

是9个,'A' 'T' 'S' '\n' '0' '1' '2' '1' '\'

主要是理解s=*p1++;*p1=*p2--;*,s=*p1++;相当于s先赋值为*p1,然后p1执行加1操作,*p1=*p2--;*相当于*p1先赋值为*p2,然后p2执行减1操作

循环体共执行4次,第一次指针p指向s,所以输出ABCD,第二次指针p指向'B'的地址,所以输出BCD,第三次指向'C’的地址,输出CD,第四次指向'D’,输出D

num不是函数strle中定义的局部变量吗?while(*(a+num)!='0') num++;执行后,num是a的字符串长度,也就是6,while(b[n]) { *(a+num)=b[n];num++;n++;}中每次循环num执行加1,共4次循环,所以一共加4,最终结果是10.

isalpha是函数,用来判断传入的参数是否是英文字母,for(i=0,j=0;str[i];i++) if(isalpha(str[i]))str[j++]=str[i];是str字符串中的每个字符判断如果其是英文字母的话就保存,如果不是的话不保存,继续下一个循环判断下一个字符,所以最终的结果是把传入字符串中的非英文字母去掉,只保留英文字母。

3. 关于c语言编程GA选数的问题 从1-8中任选几个数字,使它们相加等于20,每次循环中一个数字用一

我不明白你为什么一定要随机选定数,如果是随机选定数你怎么判断结束条件呢?
下面我是不随机选定数的,你看看是否有用
思路是:
定义一个数组,用来存放已入选的数。
在主要实现函数search中,sum表示已入选的数的和,index表示数组中下一个数的存放位置的下标,big表示从不大于big的数中选数,从最大的可选数top开始。
如果big 和sum的和比目标小,就把big写入数组,进入下一轮搜索,
新搜索参数index+1,big-1。
如果想等,则把big写入数组,打印数组中直到index下标的数,也就是相加等于目标的数
如果大于,就什么都不做了。
最后search调用自己,在big- 1 的可选数中搜索一遍。因为是递归调用的,所以big-2,big-3...
直到base都会调用一遍。
结束条件为 搜索的范围小于可选的最小数,即没有数可选时。
#include<stdio.h>
#define base 1
#define top 8
#define TARGET 20
int arr[8-1+2]; //to store selected numbers
void show(int index){
int i;
for(i = 0; i <= index; ++i)
printf("%d\t", arr[i]);
printf("\n");
}
void search(int sum, int index, int big){ //big is the biggest number can be chose from to continue adding up
//if big < base, sum cannot increase, exit
if(big < base)
return;
if(sum + big < TARGET){
arr[index] = big;
search(sum + big, index + 1, big - 1);
}else if (sum + big == TARGET){
arr[index] = big;
show(index);
}
search(sum, index, big - 1);
}
int main(){
search(0, 0, top);
return 0;
}

4. C语言 几道选择题

注:水平不高……第一想帮帮你,第二我也在学习C++,所以想试试,如有错误,请您见谅

【1】选(B)

因为A,B,C都是整型,在商的过程中,小数点后面都没有了,所以得出结果的1.4,最后因为C的整型类型的缘故,导致后面的小数点0.4没有了,结果只是1

【2】选(B)

continue的作用是,符合IF判断条件则跳出循环,进行下一循环,则由于i=0,符合判断条件if(i<1),然后就跳出循环,再重复while循环,然后再判断,又符合,然后再再执行循环,无限下去……因此是死循环

【3】选(A)

由于switch(i)的循环体内,并没有break,导致每一个case,如果符合条件,就会一条条的执行下去

若i=1,依次执行case1,case2,default,由于case1没有贡献,case2使得a=8,default使得a=13

若i=2,依次执行case2,default,由case2使得a=16,default使得a=21

若i=3,依次执行case3,case1,case2,default,这样下去,到i=4的循环执行完毕后,再判断一下i的大小

最后就跳出了,答案是a=31

【4】选(C)

这道题,直接放到编译器……就可以了,但是强调的是……不同的编译器选择的自增自减的语句原则不同

以VISUALC++为例,一般符合学习语法,但是TUBOR和CFREE等,对自增自减的语法有不同的规定

举个例子,n=(++a)+(++a)+(++a);,假如a=3,那么有的编译器会认为n等于15,但有的认为是12

因为有的编译器认为每次都要自增,但是有的编译器认为自增一次后,等到等式运算结束,碰到分号,结束语句后再进行处理自增(虽然a=6,但是不同编译器处理n值结果不一样)。

本题如果按照visualC++来的话,应该是1313。因为n=(++x)+(++x);第一个x这时先自增成6,再参与加法运算,然后第二个x同理先自增,再运算,变成8,于是就是n=6+8;而m=(x--)+(x--);由n运算完毕的x是等于8的,参与m的减法运算之后,再自减,同理m=8+6;最后x还是等于5。

【5】选(C)

因为if((++i>0)||(++j>0))a++;这一句,编译器是这样执行的,当或语句出现,只要第一个条件满足,立刻忽略后面的语句,即编译器编译啊编译啊,突然编译到++i>0,这句时,发现时TRUE,是正确的,由或概念,可知,if语句判断通过,于是编译器直接忽略后面的++j,于是j的值其实根本没有改变。

【6】选(D)

字符串的放置,人是看不见的,在机器内部,默认的放置时,比如说chara[]=”abc”;那么系统会拿出4个“盒子”,打个比喻,说成盒子,其实盒子就内存。abc分别装入三个盒子,最后一个盒子装的是“”,这个“”符号表示的是结束的意思,就是说,系统一碰到这个符号,默认认为输入的字符立刻结束。所以说,你定义的chara[]=”abcabc”;,系统编译时,一碰到立刻停止往数组内输入数据,实际上字符串输入数组只有abc。另外:符号,不会输出在屏幕上的。

【7】选(C)

关键在于printf(“%d”,c>b>a);,C=3,B=2,那么C>B,是真,真就是1,系统默认的,就好比一个if判断语句,什么也不写。if(){/*这里面是程序*/},那么判断的时候,怎么判断呢?如果数据进入时0,那么就为假,如果数据进入的是1或者非零,就是真,道理就在这里。而且符号大于号,是判断符号,不是赋值符号。因此C>B的事实是正确的,因此C>B结果是1,然后按照比较符号的调用左规则,继续和A比较,而1是等于A的,而不是大于A,那么此事件是假,为假事件,那么假事件结果就是0

【8】选(D)

p=&a,指的是*P这个指针现在等于a,注意是“星P”等于a,而P不是等于a的,P是a的地址,*P才是等于a,其实星P就是和a没有区别,a就是星P,星P就是a。然后a=*p+b;就是a=a+b;所以a=11了

【9】选(C)

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。至于正确选项:C语言本身没有输入输出语句,其功能须通过调用相关函数来实现。语言本身没有输入/输出语句其功能须通过调用相关函数来实现。

【10】选(B)

这个……A项少了分号,C项既然是指针,那么取的应该是地址,最后一项,显然……字符串,如果不是GETS()函数,那么就应该用循环,才能实现SCANF的输入

【11】选(B)

显然example是结构体内某个具体的对象,而x,y,z都是关于example属性修饰之类的成员,比如说example可以代表一本例子样本的书,那么x,y,z可以代表修饰书的作者,出版时间,出版社,都是书的成员属性。而至于一个结构体类型有其专有的标志,它由两个单词组成,第一个关键字struct,第二个单词按标识符命名规则指定。

【12】选(A)

由于判断的条件不是K==1,注意是两个等号,由于只是一个等号,系统认为,条件是K=1,注意是把1赋值给K,然后就成了,然后进入循环。切记=是赋值,==是判断。以后所有的……个跟第七题,很像了,凡是非零的数据进入判断,都是真事件

汗……怎么直接15题

【15】选(D)

显然……你之前的题目里面就有A项的赋值方法,然后B项可以理解为将n3的值赋给n2,然后再把覆盖的n2赋给n1,C项理解为判断i与j是否相等,相等则事件真,k就等于1,若为假,k就等于零。D项错在等号的赋值符号是具有右结合性的,应从右至左处理符号。显然最后一项有错误

以上全为个人所写,绝无雷同,请勿传播……如有错误,请指出,共同进步

5. c语言选数求和

由于你的求和个数不一样,很难计算,不过可以通过修改代码来实现,以下提供求和个数为3的代码
# include <stdio.h>
int main ()
{
int n, i, j, k, sum = 0;
FILE *pout;
pout = fopen("ok.txt", "wb");
printf("please enter n: ");
scanf("%d", &n);
int* arg = new int[n];
for (i = 0; i != n; ++i)
{
printf("please enter the %d number: ", i + 1);
scanf("%d", &arg[i]);
}
for (i = 0; i != n - 2; ++i)
{
for (j = i + 1; j != n - 1; ++j)
{
for (k = j + 1; k != n; ++k) //求和个数为3就用3个for循环,4个就再加一个,下面的修改下就行了
{
fprintf(pout, "%d + %d + %d = %d", arg[i], arg[j], arg[k], arg[i] + arg[j] + arg[k]);
fprintf(pout, "%c%c", 0x0d, 0x0a);
}
}
}
for (i = 0; i != n; ++i)
{
sum += arg[i];
}
fprintf(pout, "sum is %d", sum);
delete []arg;
fclose(pout);
return 0;
}

6. C语言选择题(最好解释)

len和str分别是3和9
c中字符串的长度len计算的结束标志就是遇到\0,所以就是3
字符串大小,就是整个字符串的大小了,\0也是一个字符,所以就是9

7. C语言 数组选择题

A
D (c2 - 0)是字符'2'的ASCII值,所以不是数字2.
a[1]数组a的第二个数
'd' - c1 -> 'd' - 'b' 等于2
a['3' - c2] -> a[ '3' - '2'] -> a[1]

8. C语言数据选择问题

printf()这个函数中 可以定义输出格式 比如 printf("%0f"); 可以想输出多少 输出多少 带不带小数点.

(1). 可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度
为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
2. 一些特殊规定字符

9. 选数 c语言

双重双循环加一个素性检验子函数即可……

10. C语言随机数题目

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#defineN9
ints[10];
voidcreate()
{
inti=0,m=0;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
m=rand()%90+10;
s[i]=m;
}
printf(" 以下是产生的数字 ");
for(i=0;i<9;i++)
printf("%d->",s[i]);
printf("%d ",s[9]);
}
voidsort()
{
inttmp;
inti=0,j=0;
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if(s[i]>s[j])
{
tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
for(i=0;i<9;i++)
printf("%d->",s[i]);
printf("%d ",s[9]);
}
voidfind()
{
intk=0,mid,left=0,right=N;
sort();
printf("请输入你要查找的数字(10<k<100) ");
scanf("%d",&k);
mid=left+right;
while(left<=right&&s[mid]!=k)
{
if(s[mid]<k)
left=mid+1;
elseif(s[mid]>k)
right=mid-1;
mid=(left+right)/2;
}
if(s[mid]==k)
printf("数组中有%d这个数字,位置为第%d个",k,++mid);
elseprintf("数组中没有%d这个数字 ",k);
}
main()
{
inti=10;
while(i)
{
printf(" -------------------------------- ");
printf(" 1随机10个数字 ");
printf(" 2查找 ");
printf(" 3排序 ");
printf(" 0退出 ");
printf(" 请选择 ");
scanf("%d",&i);
switch(i)
{
case1:create();break;
case2:find();break;
case3:printf(" 以下是排序后的结果 ");sort();break;
case0:printf("退出 ");break;
default:printf("error!");
}
printf(" 按任意键继续...");
getch();system("cls");
}

}