关于C语言的几道习题 急求高手解答!
二级考试理论上是说按步骤给分,但是其实本质就是只看结果,因为按步骤要完全匹配它的答案才给分,例如定义一个变量 答案定义成int flag;你写的是int a;这样你就错了,不得分,所以说本质上它是按结果给分的。 其实二级考试也有题库啊,把题库做一遍肯定能过的,而且改错和填空相对简单些,这两个做出来了,过一般不成问题,暑假有很多时间,完全可以把题库做完,加油吧。
不要看他们的答案,应该都是粘的,太不负责任了,这套题我刚做了的,我做的答案是DCBAA BCDDC 这个我也是帮别人做的,我看来他们的答案,有的是往年真题原题,他们的答案根本不对!
1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数组中对应的下标值#include <stdio.h>
#define N 20
void main()
{
int arr[N];
int i,j,t,f;
printf("输入数组:\n");
for(i=0;i<N;i++)
scanf("%d",arr+i);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(arr[i]<arr[j])
{t=arr[i];arr[i]=arr[j];arr[j]=t;}
for(i=0;i<N;i++)
printf("%5d",arr[i]);
printf("输入要找的数:");
scanf("%d",&f);
for(i=0;i<N;i++)
if(f==arr[i])
printf("%d\n",i);
if(f>arr[0]||f<arr[N-1])
printf("null\n");
}
2、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
#include <stdio.h>
#define N 100
void main()
{
char arr[N];
int i;
int ch=0,sp=0,num=0,other=0;
printf("输入字符串:\n");
gets(arr);
for(i=0;arr[i]!='\0';i++)
{
if((arr[i]>='a'&&arr[i]<='z')||(arr[i]>='A'&&arr[i]<='Z'))
ch++;
else if(arr[i]==' ')
sp++;
else if(arr[i]>='0'&&arr[i]<='9')
num++;
else
other++;
}
printf("字符%d,空格%d,数字%d,其他%d\n",ch,sp,num,other);
}
3、编一函数,将十进制整数转换为十六进制整数。
#include <stdio.h>
#define N 100
void main()
{
char arr[N];
int i=0;
long num=0;
printf("输入十六进制数:\n");
gets(arr);
while(arr[i]!='\0')
{
if(arr[i]=='A'||arr[i]=='a') num=num*16+10;
else if(arr[i]=='B'||arr[i]=='b') num=num*16+11;
else if(arr[i]=='C'||arr[i]=='c') num=num*16+12;
else if(arr[i]=='D'||arr[i]=='d') num=num*16+13;
else if(arr[i]=='E'||arr[i]=='e') num=num*16+14;
else if(arr[i]=='F'||arr[i]=='f') num=num*16+15;
else if(arr[i]>='0'&&arr[i]<='9') num=num*16+arr[i]-'0';
i++;
}
printf("%ld\n",num);
}
4、写出一通用函数,该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,若找不到返回0。
#include <stdio.h>
#include <string.h>
#define N 5
int find(char *str[],char *abc)
{
int i;
for(i=0;i<N;i++)
if(strcmp(str[i],abc)==0)
return 1;
if(strcmp(str[N-1],abc)!=0&&i==N)
return 0;
}
void main()
{
char s[50],*arr[N]={"basic","come on","student","teacher","country"};
int flag;
printf("输入查找的字符串:\n");
gets(s);
flag = find(arr,s);
printf("%d\n",flag);
}
1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数组中对应的下标值
#include <stdio.h>
#define N 20
int main()
{
int a[N]={0};
int i,j,t,n;
printf("输入%d整数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
//冒泡法排序
for(i=0;i<N-1;i++)
{
for(j=N-1;j>i;j--)
{
if(a[j-1]<a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
//输出数组
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
printf("输入一个数:");
scanf("%d",&n);
for(i=0;i<N;i++)
{
if(n==a[i])
{
printf("下标值:%d\n",i);
break;
}
}
return 0;
}
2、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
#include <stdio.h>
int main()
{
int eng,space,digit,other;
char ch;
eng=space=digit=other=0;
while((ch=getchar())!='\n')
{
if((ch<='Z' && ch>='A')
||(ch<='z' && ch>='a'))
{
eng++;
}
else if(ch==' ')
{
space++;
}
else if(ch<='9' && ch>='0')
{
digit++;
}
else
{
other++;
}
}
printf("英文字母:%d, 空格:%d, 数字:%d, 其他字符:%d\n",
eng,space,digit,other);
return 0;
}
3、编一函数,将十进制整数转换为十六进制整数。
#include <stdio.h>
#include <stdlib.h>
void trans(int n,int m)
{
if(n)
{
trans(n/m,m);
if(n%m<10)
printf("%c",n%m+'0');
else
printf("%c",n%m-10+'A');
}
}
void main()
{
int n,m=16;
printf("输入十进制数N:");
scanf("%d",&n);
printf("十进制数%d转化成%d进制后的结果为:",n,m);
trans(n,m);
printf("\n");
}
4、写出一通用函数,该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,若找不到返回0。
#include <stdio.h>
#include <string.h>
#define N 5
int find(char *a[],char *str)
{
int i;
for(i=0;i<N;i++)
{
if(strcmp(str[i],abc)==0)
{
return 1;
}
}
return 0;
}
void main()
{
char *a[N]={"basic","come on","student","teacher","country"};
char str[80];
puts("输入查找的字符串:\n");
gets(str);
if(find(a,str))
{
printf("找到\n");
}
else
{
printf("找不到\n");
}
}
都编译好了,工作量很大啊!
1、
#include <stdio.h>
#include <string.h>
void main()
{
int temp[20],B,i;
int search;
printf("input the data\n");
for(i=0;i<20;i++)
scanf("%d",&temp[i]);
for(i=19;i>=0;i--)
for(int j=0;j<i;j++)
{
if(temp[j]<temp[j+1])
{
B=temp[j];
temp[j]=temp[j+1];
temp[j+1]=B;
}
}
printf("排序结果为:\n");
for(i=0;i<20;i++)
printf("%d ", temp[i]);
printf("\n");
printf("请输入要查找的值:\n");
scanf("%d",&search);
for(i=0;i<20;i++)
{
if(search==temp[i])
{
printf("你输入的数存在,下标为%d\n",i);
break;
}
else
if(search>temp[i])
printf("你输入的数不存在\n");
else
{
i++;
}
}
if(i==20)
printf("你输入的数不存在\n");
}
/****************************/
2、
#include <stdio.h>
#include <string.h>
void main()
{
int i=0;//英文字母数量
int j=0;//konge数量
int k=0;//数字数量
int others=0;//其他字符
char temp;//接收字符。
printf("Please input the string\n") ;
while(true)
{
scanf("%c",&temp);
if(temp=='\n')
break;
else
{
if(((temp>='a')&&(temp<='z'))||((temp>='A')&&(temp<='Z')))
{
i=i+1;
continue;
}
if((temp>='0')&&(temp<='9'))
{
j=j+1;
continue;
}
if(temp==' ')
{
k=k+1;
continue;
}
others++;
}
}
printf("字符数量: %d\n",i);
printf("数字数量: %d\n",j);
printf("空格数量: %d\n",k);
printf("其他数量: %d\n",others);
}
/*************************/
3、
#include <stdio.h>
#include <string.h>
void main()
{
char HEX[17] = {"0123456789ABCDEF"};
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);
int a[10];
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;
}
i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)//倒序输出
{
printf("%c",HEX[a[i]]);
}
printf("\n");
}
4、
#define findstring "You"
int find(char *string)
{
int counter=0;
int k=0;
int l=0;
counter=strlen(string);
for(k=0;k<(counter-4);k++)
for(l=0;l<2;l++)
if((string[l]=='Y')&&(string[l+1]=='o')&&(string[l+2]=='u'))
{
return (1);
break;
}
return(0);
}
/*****************/
4、
#define findstring "You"
int find(char *string)
{
int counter=0;
int i=0;
counter=strlen(string);
for(i=0;i<(counter-3);i++)
if((string[i]==findstring[0])&&(string[i+1]==findstring[1])&&(string[i+2]==findstring[2]))
{
return (1);
break;
}
return(0);
}
C语言小作业,请高手帮一下忙.
题目中没有判断条件,默认是一直为真,所以选B 2:A continue语句的作用是结束当前循环,即跳过一次循环,不是结束整个循环语句;B 正确;C break是退出整个循环,continue作用看A;D 还有其他方法退出的,忘记了,呃。。。尴尬 3:D 无限 循环语句内I,J值一直不变,都是10 ...
关于C语言的一道题目 关于strcpy,memcpy,求高手解,万分感激
memcpy 要复制 cc到aa,那到底复制哪些内容呢? 你看过memcpy()的源码就知道了,它是以char类型的一个字节一个字节复制数据的,换句话说,sizeof(aa)就决定了从0 ---z那串字符串复制多少到aa中。 sizeof(aa)这个值是多少呢? 这决定于位域的压缩规则,细说起来很多,自己可以搜索,但是关键的...
有一道C语言习题烦高手帮忙指点,给出答案及说明过程!
结果z=22,x++,+在后面是使用完x在+1 x--,-在前面是x-1后再使用x 开始x=6,x++先不使用,--x,x=5,同理y=6 z=(5+6)+(5+6)=22 然后x=x+1=6;y=y+1=7 有些东西不能只靠思考,要实际试一下,其实关于这种顺序的问题,建议在机子上多试几次,这些单凭记忆是很难记清的...
C语言高手进,帮忙解答一下下列各题的标准答案。此题是我的重要复习题...
专业回答,质量保证!【答案】32.D 33.B 36.A 45.C 47.C 50.D 58.B 【解析】32.字符串数组除了里面的实际字符,系统还会自动的分配一个结束符"\\0",所以该数组所占空间为6+1=7个。33.一句话说不明白,放心,已经通过程序验证,答案肯定正确。36.括号内的只能算是一个参数。45.因为是...
请C语言高手帮忙解答一下下列各题的标准答案。此题是我的重要复习题,不...
C语言老手为你解答:CBCCC CCAC(C)DDDA 。第1题已确定选C,不必怀疑,(只有新手才会错选D);第10题如果是你无意漏掉了C的分号,那么原题选C,如果原题就没分号,那么原题没有答案;第14题出的不太好,因为这个程序的错误有多种纠正方法(纠正的位置不同),因此关于它出错的地方也可以有多种...
C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
而 *(pt+l)+2 就是指向pt+1这一行的第三个字符 也就是t[1][2] 所以*(*(pt+l)+2) 就是指向t[1][2] 内容的 PS:for 循环中执行的意思就是: pt[0]→ a,b,c pt[1]→ e,f,g pt[2]→ h ,i, j 而pt对应的其实就是pt[0]所以 pt+1 =pt[1]2.定义sum的...
数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...
c语言的简答题!求高手解答
1 C 外部extern 2 A 函数中有递归函数 void型函数为无返回值函数 C语言程序有函数体组成 main函数 到各个子函数等 3 D 数组名做形参传的是数组首地址 B C不解释 被调函数在主调之前可以不声明 4 D 5 D 6 B 7 B static 可以修饰任意位置变了 全局和静态变态存在数据区 初值为0 8 B...
C语言的题,高手快点来救救我,
incude<stdio.h> define N 5 void main() { int a[N]={ 8,6,5,4,1 },i,j,k;for ( i=0;i<N-1;i++ ) for ( j=i+1;j<N;j++ ) if ( a[i]>a[j] ) {k=a[i];a[i]=a[j];a[j]=k;} for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\\n");...
C语言菜鸟求高手解答...
第一个问题只能说是一个判定条件,不知道你要的结果是什么。。2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个 main(){ int m=5;i...