C语言经典题
追梦小蚂蚁
走一次不一样的人生。
展开
-
实现一个函数可以求任意个参数的平均值。
#include <stdio.h>#include <stdarg.h>int average(int n, ...){ va_list arg; int i = 0; int sum = 0; va_start(arg, n); for(i=0; i<n; i++) { sum += va_ar...原创 2018-04-08 17:20:41 · 3381 阅读 · 0 评论 -
使用C语言编写程序,求十个整数中的最大值
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int arr[10] = { 0 }; int i = 0; int max = 0; printf("请输入十个整数:"); for (i = 0; i < 10; i++) { sc...原创 2018-02-26 15:16:14 · 10241 阅读 · 3 评论 -
使用C语言编写程序,求任意两个整数的较大值
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#define max(a,b)((a>b?a:b))int main(){ int a = 0; int b = 0; int c = 0; printf("请输入两个整数:"); scanf("%d%d", &a, &am...原创 2018-02-26 15:15:01 · 2548 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达式中,有多少个位不用?
#define _CRT_SECURE_NO_WARNINGS 1#includeint count_one_bit(int n){ int count = 0; while (n) { count++; n = n&(n - 1); } return count;}int main(){ int m =原创 2018-01-29 14:26:31 · 156 阅读 · 0 评论 -
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){ int n = 0; scanf("%d", &n); int i = 0; for (i = 30; i >= 0; i -= 2) { printf("%d",(n >> i) & 1); } printf(原创 2018-01-29 13:56:00 · 163 阅读 · 0 评论 -
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字就不输出
#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){ int ch = 0; while ((ch = getchar()) != EOF) { if (ch >= 'A'&&ch 'Z') { printf("%c", ch + 32); }原创 2018-01-28 13:36:32 · 202 阅读 · 0 评论 -
C猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includevoid menu(){ printf("************************************\n"); printf("****** 1.play 0.exit *********\n"); prin原创 2018-01-28 13:21:18 · 335 阅读 · 0 评论 -
求N的阶乘(不考虑溢出情况)
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint main(){ int n = 0; int i = 0; int ret = 1; scanf("%d", &n); for (i = 1; i < n; i++) { ret = ret*i; } pr原创 2018-01-27 17:27:47 · 357 阅读 · 0 评论 -
求任意整数的阶乘(不考虑溢出情况)
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint main(){ int n = 0; int ret = 1; int j = 0; int sum =0; printf("请输入要求的阶乘:"); scanf("%d", &n); for (j = 1; j <= n;j++原创 2018-01-27 17:44:39 · 361 阅读 · 0 评论 -
C语言之利用函数交换两个数的值
#define _CRT_SECURE_NO_WARNINGS#includevoid Swap(int *px,int *py){ int tmp = *px; *px = *py; *py = tmp;}int main(){ int a = 1; int b = 2; Swap(&a,&b); printf("a = %原创 2018-01-10 20:46:43 · 8323 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int num = 0; int count = 0; scanf("%d",&num); while(num) { if(num%2 == 1) count++; num原创 2017-12-22 15:28:25 · 428 阅读 · 0 评论 -
输出一个整数的每一位
按我们的一般思维来说想要输出一个整数 n 的每一位,我们可以想到使用 n%10和 n /10的方法依次去输出。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h> int main(){ int n; printf("请输入一个整数:\n"); scanf("%d", &n); while (n) {原创 2017-12-22 15:57:58 · 2770 阅读 · 0 评论 -
写一个函数将一个字符串逆序
1//用for循环做#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>void Reverse(char arr[]){ int i = 0; int len = strlen(arr); for (i = 0; i < len / 2; i++)...原创 2018-02-26 17:13:05 · 3011 阅读 · 1 评论 -
输入N,打印对应N行的图案。
例如输入5则打印1 22 333 4444 55555#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int i = 0; int j = 0; int n = 0; printf("请输入你要打印的行数:"); scanf("%d", &...原创 2018-03-06 18:56:15 · 4621 阅读 · 0 评论 -
写冒泡排序可以排序多个字符串。
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>void bubble_sort(char(*arr)[9], int sz){ int i = 0; for (i = 0; i < sz - 1; i++) { int j = 0;...原创 2018-03-30 16:17:22 · 195 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都成对出现,找出这两个数字,编程实现
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int arr[] = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 6 }; int ret = 0; int i = 0; int pos = 0;//二进制位 int num1 = 0; in...原创 2018-03-30 09:36:01 · 403 阅读 · 0 评论 -
编写函数不允许创建临时变量,求字符串的长度
1、用递归的方法实现#include<stdio.h>int strlen(const char*str){ if (*str == '\0') { return 0; } else { return 1 + strlen(str + 1); }}int main(){ char...原创 2018-03-16 21:42:53 · 292 阅读 · 0 评论 -
查找字符串中第一个只出现1(k)次的字符找到了返回字符找不到返回-1。
经典题: 解题方法:1、遍历这个字符串(缺点是要对这个字符串查找好多次) 2、先创建一个数组然后这个数组你就放成256个元素。 把这个字符串转化成ASCLL码进行查找。(因为ASCLL码的范围比较小) 例如当我们发现字符串中出现a(a的ASCLL为97)的时候,我们可以把刚才256个元素中下边为97的元素的值加一下 。#defi...原创 2018-02-28 23:36:13 · 622 阅读 · 0 评论 -
写一个函数可以将一个字符串左旋转K个字符。
什么叫做字符串旋转?1、暴力求解法: 例如:将字符串abcdef左旋转2个字符这个字符串将变成cdefab。//(0=<k<=字符串长度)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#include<assert.h>char* LeftM...原创 2018-02-28 12:42:02 · 173 阅读 · 0 评论 -
写一个函数:判断当前使用的机器是大端还是小端
1、#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int check_sys(){ int a = 1; return *(char*)&a;//返回1小端 返回0 大端}int main(){ int ret = check_sys(); if (ret == 1) ...原创 2018-02-27 20:23:54 · 655 阅读 · 0 评论 -
模拟实现库函数:strcat
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>char* my_strcat(char* dest, const char *src){ char*tmp = dest; assert(dest != NULL&&src != NULL); ...原创 2018-02-27 20:03:27 · 231 阅读 · 0 评论 -
写一个函数,求第N个斐波那契数
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//递归方式:int fib(int n){ if(n <= 2) return 1; else return fib(n-1)+fib(n-2);}//循环方式:int fib(int n)//1 1 2 3 5 8...原创 2018-02-27 14:27:50 · 539 阅读 · 0 评论 -
杨氏矩阵
什么叫做杨氏矩阵:有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的。在这样的数组中查找一个数字是否存在。时间复杂度小于o(N);数组: 1 2 3 2 3 4 3 4 51 3 4 2 4 5 4 5 6 方法1、从最右上角找如果要找的数比最右上角的数小则去掉右上角的那一列。如果要找的数比最右上角的数大则去掉右上角的那一行。#define _CRT_SECU...原创 2018-03-06 20:34:50 · 190 阅读 · 0 评论 -
调整数组使奇数全部位于偶数前面。
题目:输入一个整数数组,实现一个函数,来调整数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#define _CRT_SECURE_NO_WARNINGS 1void Move(int arr[], int sz){ int left = 0; int right = sz - 1; while (left < righ...原创 2018-03-06 19:58:53 · 176 阅读 · 0 评论 -
一个正整数有可能可以被表示为M(M>2)个连续正整数之和。
例如15=1+2+3+4+5; 15=4+5+6; 15=7+8; 编写一个程序,输入一个正整数,然后找出符合这种要求的所有连续正整数序列,若不存在这种序列。则打印None。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int num = 0; int start = ...原创 2018-03-06 19:23:58 · 9883 阅读 · 0 评论 -
假定你有1000元,每年投资的收益是5%,则经过多少年你的钱会翻倍。
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ double money = 0; double total = 0; int year = 0; scanf("%lf", &money); total = money; while (total &...原创 2018-03-06 19:08:45 · 4269 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比
#include int main(){ int a = 0, b = 0, c = 0, d = 0, e = 0; for (a = 1; a 5; a++) { for (b = 1; b 5; b++) { for (c = 1; c 5; c++) {原创 2018-01-05 17:58:32 · 410 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。
#include int main() { char killer; for(killer='A'; killer'D'; killer++)//巧妙地利用ASCII 从A-D进行循环和比较 { //下面分别对应每个人都供词 不是A 是C 是D 不是D if (((killer!='A') +原创 2018-01-05 18:03:25 · 267 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换(数组A和数组B大小相等)
#define _CRT_SECURE_NO_WARNINGS 1#include#define N 5 //你可以任意定这个数组的大小int main(){ int arr1[N], arr2[N], tmp; int i; printf("请输入arr1数组元素:\n"); for (i = 0; i < N; i++) scanf("原创 2018-01-24 16:13:24 · 412 阅读 · 0 评论 -
判断两个数组中是否有相同的元素,有就输出“有”,没有就输出“没有”
#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){ int arr1[] = { 1, 2, 3, 4, 5, 6, 7 }; int arr2[] = { 1, 2, 3, 4, 5, 6, 9, 8, }; int i = 0; for (i = 0; i sizeof(arr1) / sizeof(a原创 2018-01-23 18:32:11 · 419 阅读 · 0 评论 -
用C语言求一元二次方程的解
#define _CRT_SECURE_NO_WARNINGS 1#include#define EXP 0.000000000000001#includeint main(){ double a = 0.0; double b = 0.0; double c = 0.0; printf("请输入三个数:"); scanf("%lf%lf%lf",原创 2018-01-23 22:37:47 · 900 阅读 · 0 评论 -
求任意两个整数数的最大公约数
#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){ int a = 0; int b = 0; printf("请输入两个数:"); scanf("%d%d", &a, &b); while (a%b != 0) { int tmp = a%b; a = b;原创 2018-01-22 22:18:45 · 1933 阅读 · 0 评论 -
输出人一个整数中的最大值和最小值
#define _CRT_SECURE_NO_WARNINGS 1#include #include void main(){ int max, min, n, number, i; printf("请输入要比较的整数个数:"); scanf("%d", &n); if (n 0) exit(0); printf("请输入你要比较的整数:");原创 2018-01-22 21:13:12 · 822 阅读 · 0 评论 -
C语言多文件实现三子棋
1、所用函数声明部分(在头文件中)//game.h#ifndef __GAME_H__#define __GAME_H__#include#include#include#define ROW 3#define COL 3enum OPTION{ EXIT, PLAY};#endif //__GAME_H__void Initboard(cha原创 2018-01-14 14:26:33 · 187 阅读 · 0 评论 -
C语言之冒泡排序的优化
1、原冒泡排序void print_arr(int arr[], int sz){ int i = 0; for (i = 0; i < sz;i++) { printf("%d ", arr[i]); } printf("\n");}void bubble_sort(int arr[], int sz){ ...原创 2018-01-13 22:14:29 · 2211 阅读 · 0 评论 -
写一个函数,每调用一次这个函数,就会将num的值加1
#define _CRT_SECURE_NO_WARNINGS#includevoid Add(int *p){ (*p)++;}int main(){ int num = 0; Add(&num); printf("%d\n", num); Add(&num); printf("%d\n", num); r原创 2018-01-13 18:29:43 · 5256 阅读 · 0 评论 -
写一个函数,实现一个整形有序数组的二分查找。
#define _CRT_SECURE_NO_WARNINGS#include#includeint binary_search(int arr[], int k, int sz){ int left = 0; int right = sz - 1; int mid = 0; while (left right) { mid = l原创 2018-01-13 17:46:20 · 904 阅读 · 0 评论 -
用函数实现判断一个数是不是素数
#define _CRT_SECURE_NO_WARNINGS#include#includeint is_prime(int n){ int j = 0; for (j = 2; j sqrt (n); j++) { if (n%j == 0) { return 0; } }原创 2018-01-12 23:38:42 · 7857 阅读 · 2 评论 -
用函数判断year是不是闰年
#define _CRT_SECURE_NO_WARNINGS#includeint is_leap(int year){ if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { return 1; } return 0;}int main(){原创 2018-01-12 23:10:35 · 430 阅读 · 0 评论 -
用C语言中的函数打印乘法口诀表,行数和列数可以任意输入
#define _CRT_SECURE_NO_WARNINGS#includevoid print_table(int line){ int i = 0; for (i = 1; i <= line; i++) { int j = 0; for (j = 1; j <= i; j++) { pri原创 2018-01-12 22:31:50 · 710 阅读 · 0 评论