c学习第6天
3.下面代码运行后m的结果为(C)
int m = 6;
m = (m%3*4)?m/4:--m;
printf("%d",m);
A:1 |
B:2 |
C:5 |
D:6 |
5.以下代码输出的结果为(D)
int m = 0;
for (int i = 0; i<5; i++) {
switch (i) {
case 0:m++;
case 1:m++;break;
case 2:m++;continue;
case 3:m++;break;
default:m++;continue;
}
m++;
}
printf("%d",m);
A:12 |
B:11 |
C:10 |
D:9 |
6.以下代码运行的结果为(B)
int i = 1,m = 1;
for (; i<10; i++) {
if (i/2 == 2 || i%4==0) {
for (int j = 4; j < i; j++) {
m+=j;
}
}
}
printf("m = %d",m);
A: 26 |
B: 27 |
C: 28 |
D: 29 |
7. break关键字在哪一种语法结构中不能使用? (C)
A: for语句 |
B: switch语句 |
C: if语句 |
D: D. while语句 |
8.下列数组说明中,正确的(C)
A: int array[][]={0}; |
B: int array[3][]={0}; |
C: int array[][4]={0}; |
D: int array[][][5]={0}; |
10.下列选项中正确的语句组是(D)。
A: char s[8]; s={"lanou"}; |
B: char s[8]; s="lanou"; |
C: char * s; s={"lanou"}; |
D: char * s; s="lanou"; |
13.如有定义 int a[6] = {0};int * p1 = a;int * p2 = &a[6]; 则p2-p1的结果为(A)
A: 5 |
B: 6 |
C: 20; |
D: 24 |
2.随机找出1到10之间的n个数,找到的数不能重复(注:n小于10,要求高性能)
int a[10] = {1,2,3,4,5,6,7,8,9,10};
//随机数个数
int n = 10;
//随时数下标
int postion = 0;
for (int i = 0 ; i< n; i++) {
//每次限机的下标递减9,8,7...
postion = arc4random()%(10-i);
printf("%d ",a[postion]);
//将随机出来的元素与最后一个交换(相当于排除)
int temp = a[postion];
a[postion] = a[10-i-1];
a[10-i-1] = temp;
}
3. 输入一个整数数组,调整数组中数组的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
int i = 0; int j = 0; int temp=0; while (i < n) { if (arr[i]%2==0) { i++; continue; } temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j++; }
4.用c语言实现一个revert 函数,它的功能是将输入的字符长在原串上倒序后返回。 char *revert(char *str)
char * revert(char * str) { char * pc=str; int count=0; while ((*(pc+count)!='\0')) { count++; } char ret_char[count]; printf("%d\n",count); for (int i=0; i<count; i++) { ret_char[i]=str[count-1-i]; } ret_char[count]='\0'; return ret_char; }
- 8.通过折半查找法在数组中找到某个数所在的位置并打印,若该数不存在则打印相应信息。
int a[ ] = {-24, 9, 5, 0, 14, 21, 32, 45, 63, 77}
int a[ ] = {-24, 9, 5, 0, 14, 21, 32, 45, 63, 77}; int value_y=0; int value=21,left=0,right=9,mid; /*key是存放需要查找的数的,当然你可以随便改为别的*/ while(left<=right) { mid=(left+right)/2; if(value==a[mid]) { printf("%d\n",a[mid]); value_y=mid; printf("第%d\t个数\n",value_y+1); break; } else if(value>a[mid]) left=mid+1; else if (value<a[mid]) right=mid-1; } if (left==0||right==0) { printf("不存在这个数"); }
10.编写程序检查某一个整数中是否有重复的数字,如检查2822中存在重复数字2。
2. int num_count=0; 3. int flag=0; 4. int num=1234; 5. int num_copy=num; 6. while (num_copy/10) { 7. num_count++; 8. num_copy/=10; 9. } 10. 11. num_count= num_count+1; 12. int arr[num_count]; 13. for (int i=0; i<num_count; i++) { 14. arr[i]=num%10; 15. num/=10; 16. } 17. ////////////test//////// 18. for (int i=0; i<num_count; i++) { 19. printf("%d\t",arr[i]); 20. } 21. ///////////test///////// 22. for (int i=0; i<num_count; i++) {//取出数组元素中的一个值,然后和数组中的每个元素进行比较 23. for (int j=i+1; j<num_count; j++) { 24. if (arr[i]==arr[j]) { 25. flag=1; 26. // break; 27. } 28. } 29. } 30. if (flag==1) { 31. printf("存在重复数\n"); 32. } 33. else 34. { 35. printf("不存在重复数字\n"); 36. } 37.