以下程序的输出是()。
struct st { int x; int *y; } *p; int dt[4] = { 10,20,30,40 }; struct st aa[4] = { 50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0] }; void main() { p = aa; printf("%d ", ++(p->x)); }
A、10
B、11
C、51
D、60
答案:C
分析:aa是大小为4的结构体数组,p是一指向该结构体的指针,将数组名aa赋给
p,p将指向数组aa的第一个元素aa[0],p->x其实就是利用指针p来引用aa[0]的成员x,
其值为50,加1后输出的结果为51.故正确答案是C
以下程序的输出是多少?
main() { int a[3] = { 0,1,2 }; int *p; int *q; p = a; q = &a[2]; printf("%d", a[q-p]); return 0; }
A、0
B、1
C、2
D、未知
答案:C
分析: 这里q-p的实际运算是:(q的地址值-p的地址值)/sizeof(int),所以为2。
若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是()
1.p=s;
2.p=k;
3.p=s[0];
4.k=s;
A、124
B、1234
C、12
D、234
答案:A
用 C 语言编写的源程序须经过编译连接后,生成扩展名为 .exe 的可执行文件,才能运行。
A、正确
B、错误
答案:B
分析:只有在windows环境下c源程序编译后才会生成.exe的可执行文件,Linux下生成的不是EXE文件。
给定一个数组int arr[] = {3,8,3,9,9,7,7},筛选出其中没有重复的一个数。
方法一、先定义一个动态数组将重复的数据放入动态数组中,然后将原数组与动态数组进行比较,最后筛选出没有重复的数字。
#include <stdio.h> #include <stdlib.h> int main(void) { int arr[] = { 3,8,3,9,9,7,7 };//给定的数组 int len = sizeof(arr) / sizeof(arr[0]);//得到数组长度 int value_arr[sizeof(arr) / sizeof(arr[0])];//放置重复数据的数组 //将重复结果放在数组中 int index = 0; for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { bool flag = false; for (int z = 0; z < len; z++) { if (arr[i] == value_arr[z]) { flag = true; break; } } if (arr[i] == arr[j] && !flag) { value_arr[index++] = arr[i]; break; } } } //筛选没有重复的数据 for (int i = 0; i < len; i++) { bool flag = false; for (int j = 0; j < len; j++) { if (arr[i] == value_arr[j]) { flag = true; break; } } if (!flag) { printf("%d ", arr[i]); } } system("PAUSE"); return 0; }
方法二、将原数组进行排序,若有重复数据数据则从重复数据之后进行遍历。
#include <stdio.h> #include <stdlib.h> int main(void) { int arr[] = { 3,8,3,9,9,7,7 };//给定的数组 int len = sizeof(arr) / sizeof(arr[0]);//得到数组长度 //先给数组进行排序 for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { //升序 if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //筛选没有重复的数据 for (int i = 0; i < len; i++) { if (i != 0 && i != len - 1 && len > 1) { if (arr[i] != arr[i - 1] && arr[i] != arr[i + 1]) { printf("%d ", arr[i]); } } else if (len == 1) { printf("%d ", arr[0]); } else { if (i == 0 && arr[0] != arr[1]) { printf("%d ", arr[0]); } if (i == len - 1 && arr[len - 2] != arr[len - 1]) { printf("%d ", arr[len - 1]); } } } system("PAUSE"); return 0; }