c语言笔试题

来源:互联网 发布:南阳网站搜索引擎优化 编辑:程序博客网 时间:2024/04/25 20:32
30、谷歌笔试题  求一个数二进制序列中1的个数 (可不断优化)#include<stdio.h>int main(){int a = 255;int n = 32;int count = 0;while (n--){if (a & 1 == 1){count++;}a >>= 1;}printf("%d\n", count);return 0;}31、百度笔试题 编写程序判断你的电脑是大端存储还是小端存储/***********************************************************/#include<stdio.h>int main(){int a = 1;char* c = (char*)&a;//指针法if (*c == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;}/***********************************************************/#include<stdio.h>union UN{int a;char c;};int main(){union UN un;un.a = 1;if (un.c == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;}求1-100这100个整数中9出现的次数#include<stdio.h>int main(){int count = 0;for (int i = 1; i <= 100; i++){if (i % 10 == 9 ){printf("%d ", i);count++;}if (i / 10 == 9){printf("%d ", i);count++;}}printf("\n9出现的次数为: %d\n", count);return 0;}34、程序输入一个整数,输出该整数的每一位#include<stdio.h>int main(){int a = 0;int arr[20];int i = 0;printf("Please Enter a Number: \n");scanf("%d",&a);while (a){arr[i] = a % 10;a /= 10;i++;}for (int j = i - 1; j >= 0; j--){printf("%d ", arr[j]);}printf("\n");return 0;}35、在字符串查找一个指定的字符第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL#include<stdio.h>#include<assert.h>char* FindChar(const char* s, const char c){assert(s);char* p = s;while (*p++ != '\0'){if (*p == c){break;}}if (*p == '\0'){return NULL;}return p;}int main(){char* str = "abcedefghe";char c = 'e';char* ret = FindChar(str,c);printf("%s\n", ret);return 0;}36、字符数组内容逆序#include<stdio.h>#include<assert.h>void Reverse(char* ptr,int len){assert(ptr);int begin = 0;int end = len - 2;while (begin < end){char tmp = ptr[begin];ptr[begin] = ptr[end];ptr[end] = tmp;begin++;end--;}ptr[len - 1] = '\0';}int main(){char arr[] = "bit-tech";int len = sizeof(arr) / sizeof(arr[0]);Reverse(arr,len);printf("%s\n", arr);return 0;}37、使用C语言编写一个函数,它从一个字符串提取一个子字符串,函数原型如下:int sub(char dst[],char src[],int start,int len)从src向后偏移start个字符的位置开始,最多复制len个非空字符 ,复制完毕后,以NULL结尾,返回值为dst的长度#include<stdio.h>#include<assert.h>int substr(char dst[], char src[], int start, int len){assert(dst);assert(src);char* d = dst;char* s = src;int count = 0;while (start--){s++;}while (len--){while (*s == ' ')//★★★注意此处{s++;}*d = *s;s++;d++;count++;}*d = '\0';return count;}int main(){char str[] = "hello  world,   change world";char ptr[50];int length = sizeof(str) / sizeof(str[0]);int start = 3;int len = 12;if (length < start + len){printf("input error!\n");return -1;}int ret = substr(ptr, str, 3, 12);printf("%d\n", ret);printf("%s\n", ptr);return 0;}38、从标准输入读入字符,并把它们写到标准输出,除了大写字母变成小写字母之外,其他的原样输出#include<stdio.h>int main(){while (1){char c;printf("Please Enter a char: \n");scanf(" %c", &c);//取消输入的回车 在%c 前面加空格if (c >= 'A' && c <= 'Z'){printf("%c\n", c + 32);}else{printf("%c\n", c);}}return 0;}39、当输如入a,输出Z,输入b,输出Y,以此类推,输入z,输出A           #include<stdio.h>int main(){while (1){char c;printf("Please Enter a char: \n");scanf(" %c", &c);//取消输入的回车 在%c 前面加空格if (c >= 'a' && c <= 'z'){printf("%c\n", 187-c);}else{printf("%c\n", c);}}return 0;}

0 0