五道选择题:
1、下面代码的结果是:( )
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;//1
c = ++a;//2
b = ++c, c++, ++a, a++;//3
b += a++ + c;//4
printf("a = %d b = %d c = %d\n", a, b, c);
return 0;
}
A. a = 8 b = 23 c = 8 B. a = 9 b= 23 c = 8
C. a = 9 b = 25 c = 8 D. a = 9 b = 24 c = 8
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;//1
c = ++a;//2
b = ++c, c++, ++a, a++;//3
b += a++ + c;//4
printf("a = %d b = %d c = %d\n", a, b, c);
return 0;
}
2、如下程序的运行结果是( )
char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);
A、'a' 'b' B、ab\0c\0 C、ab c D、ab
3、在下面的字符数组定义中,哪一个有语法错误( )
A、char a[20]="abcdefg"; B、char a[]="x+y=5.";
C、char a[15]; D、char a[10]='5';
4、下列程序的输出是( )
#include<stdio.h>
int main()
{
int a[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, * p[4], i;
for (i = 0; i < 4; i++)
p[i] = &a[i * 3];
printf("%d\n",p[3][2]);
return 0;
}
A、上述程序有错误 B、6 C、8 D、12
5、以下逗号表达式的值为( )
(x = 4 * 5, x * 5,x+5);
A、25 B、20 C、100 D、45
编程题1:
记负均正_牛客题霸_牛客网
#include <stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int i = 0; float sum = 0;//正整数总和
int a_count = 0; int b_count = 0;
//计数器
for (i = 0; i < n; i++)
{
int a = 0;
scanf("%d", &a);
if (a < 0)
{
a_count++;
//负数计数器
}
else if (a > 0)
{
sum += a;
b_count++;
//正数计数器
}
}
if (b_count != 0)
//除数不能是0
{
sum /= b_count;
}
printf("%d %.1f", a_count, sum);
}
编程题2:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
对qsort函数不了解的小伙伴可以看下我之前的文章
手把手教你使用qsort函数_大海里的番茄的博客-CSDN博客
#include<stdio.h>
#include<stdlib.h>
int cmp_int(const void* p1, const void* p2)
{
return(*(int*)p1 - *(int*)p2);
//升序排序
}
int* findErrorNums(int* nums, int numsSize, int* returnSize)
{
int i = 0; int x = 0;
for (i = 1; i <= numsSize; i++)
{
x ^= i;
//先从头^一遍,因为^满足交换律,顺序不重要
}
for (i = 0; i < numsSize; i++)
{
x ^= nums[i];
//再和数组内的内容^一遍得到
//丢失的数和重复的数^的结果
}
qsort(nums, numsSize, sizeof(int), cmp_int);
for (i = 0; i < numsSize; i++)
{
if (nums[i] == nums[i + 1])
//找到重复的数
break;
}
x ^= nums[i];
//x为被修改的数
*nums = nums[i];
*(nums + 1) = x;
*returnSize = 2;
return nums;
}
好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O