湖北专升本c语言习题二

阅读: 评论:0

湖北专升本c语言习题二

湖北专升本c语言习题二

100到200之间的素数

int i= 1, p = 0;for (i = 1; i <= 2000; i++) {int sum = i + 100;p = sqrt(sum);if (p * p == sum) {sum += 168;p = sqrt(sum);if (p * p == sum) {printf("%dn",i);}}}

 

99乘法表

voidninenine() {int i;for ( i = 0; i < 9; i++){       int j;for (j =1; j <=i; j++)printf("%d*%d=%2dt",i,j,i*j);printf("n");       }
}

 

判断1000年---2000年之间的闰年

int checkThousand() {int year;for ( year = 1000; year <=2000 ; year++)if ((year%4==0&&year%100!=0)||(year%400==0)) printf("%dt",year);
​
}

 

两个值的内容进行交换。

int change() {int a = 10,b = 20;int temp = a;   a = b;      b = temp;printf("a=%d,b=%d",a,b);return 0;
}
/*a1 = 0x01;    //0000 0001
a2 = 0x00;    //0000 0000
a3 = 0x03;    //0000 0011
a4 = 0x02;    //0000 0010
​
b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011
*/
int change2() {int a = 10;int b = 20;//^位异或a = a ^ b;b = a ^ b;a = a ^ b;printf("a=%d,b=%d",a,b);return 0;
}

 

求10个整数中最大值

int max() {int arr[10] = { 0,1,23,21,20,88,29,3 };int i, max = arr[0];for ( i = 0; i <10; i++)if (arr[i]>max) max = arr[i];printf("max=%dn",max);return 0;
}

 

将三个数按从大到小输出

int arraythree() {int a, b, c, temp;printf("please enter values:");scanf_s("%d %d %d",&a,&b,&c);if (a<b) {exchange(a, b);if (a<c) {exchange(a, c);if (b<c) exchange(b, c);printf("the order is:%d,%d,%dn",a,b,c);return 0;
}
int  exchange(int *x,int *y) {int temp = x;x = y;y = temp;return 0;
}

 

求两个数的最大公约数

1.辗转相除法
​
void maxPublic() {int a, b;printf_s("please enter values:");scanf_s("%d %d",&a,&b);while (a%b) {int temp = a % b;a = b;b = temp;}printf_s("the max common divisor is %dn",b);
}
​
2.短除法
​
int a, b;printf("input a,b(a>b):");scanf("%d %d",&a,&b);if (a < b) {int t = a; a = b; b = t;}int k = b;for (; k >=1; k--) {if (a % k == 0 && b % k == 0)break;}printf("最大公约数:%d,最小公倍数:%d",a*b/k,k);
​
3.递归
​
int dig(int a,int b) {if (b == 0)return a;while (b) {return dig(b,a%b);}
}
​
int main() {
​
int a, b;
printf("input a,b(a>b):");  scanf("%d %d",&a,&b);
if (a < b) {int t = a; a = b; b = t;
}
printf("最大公约数:%d,最小公倍数:%d",(a*b)/ dig(a, b),dig(a, b));return 0;
​
}

 

计算Fibonacci数列(斐波那契)

// 1 1 2 3 5 ................ 数列40个数
//递归
int fn(int n) {if (n < 3)return 1;else return fn(n - 1) + fn(n - 2);
}
void fns() {int i;for (i = 1; i <= 40; i++) {printf("%12d", fn(i));if (i % 5 == 0)printf("n");}
}
​
//2.迭代int f1 = 1, f2 = 1;int i;for (int i = 1; i <= 20; i++) { //结束条件printf("%12d %12d", f1, f2);if (i % 2 == 0) printf("n");   //if语句作用是使输出4个数后换行f1 = f1 + f2;f2 = f2 + f1;}
​
//3.数组
int i;int f[20] = { 1,1 };for (i = 2; i < 40; i++) {f[i] = f[i - 2] + f[i - 1];}for (i = 0; i < 40;i++) {if (i % 5 == 0)printf("n");printf("%12d", f[i]);}
​double f[50];f[1] = 1; f[2] = 1;for (int i = 3; i <= 49; i++) {f[i] = f[i - 1] + f[i - 2];}for (int i = 1; i < 50; i++) {printf("%.lfn",f[i]);}
​

 

 

回文检查

int checkClicy() {int n, reverse = 0, rem, temp;printf("Enter an interger");scanf_s("%d",&n);temp = n;while (temp!=0){rem = temp % 10;reverse = reverse * 10 + rem;temp /= 10;}if (reverse==n) {printf("%d is a palindrome.",n);}else{printf("%d is not a palindrome.",n);}return 0;
}

检查一个数能不能表示成两个质数之和

int prime(int n) {int i, flag = 1;if (n == 1)flag = 0;for (i = 2; i < n; i++) //或者 i<=sqrt(n){if (n % i == 0) { flag = 0; break; }}return flag;
}
//检查一个数能不能表示成两个质数之和
void checksum() {int n, i, flag = 0;printf_s("Enter a positive integer:");scanf_s("%d",&n);for ( i = 2; i < n/2; i++){if (prime(i)!=0) {if (prime(n-i)!=0) {printf("%d=%d+%dn",n,i,n-i);flag = 1;}}}if (flag==0) {printf("%d cant't be sum of two prime numbers.",n);}
}

打印金字塔和三角形

void triangle() {int i, j, rows;printf(" Enter the number of rows:");scanf_s("%d", &rows);for (i = 1; i <= rows; i++){for (j = 1; j <= i; j++){printf("*");}printf("n");}
}
//倒金字塔三角形
void invertedTriangle() {int i, j, rows;printf_s("Enter the number of rows:");scanf_s("%d",&rows);for (i =rows; i>=1; i--){for (j =1; j<=i ; j++){printf("*");}printf("n");}
}
//用 * 打印金字塔
void trigon() {int i, space, rows, k = 0;printf_s("Enter the number of rows:");scanf_s("%d",&rows);for ( i = 1; i <=rows ; ++i){for (space = 1; space <= rows-i;space++) {printf(" ");}while (k!=2*i-1){printf("*");k++;}k = 0;printf("n");}
}
//用 * 打印倒金字塔
void delta() {int rows, i, j, space;printf("Enter  number of rows:");scanf_s("%d",&rows);for ( i =rows; i>=1;i--){for (space=0;space<=rows-i;space++){printf(" ");}for (j = i; j <= 2 * i - 1; ++j){printf("*");}for (j = 0; j <i-1; j++){printf("*");}printf("n");
}

简单的加减乘除计算器

void counter() {char o;float num1, num2;printf_s("Enter operator either + or - or * or divide:");scanf_s("%c", &o);printf_s("Enter two operands:");scanf_s("%f%f", &num1, &num2);switch (o){case '+':printf("%.1f+%.1f=%.1f",num1,num2,num1+num2);break;case '-':printf("%.1f-%.1f=%.1f", num1, num2, num1 - num2);break;case '*':printf("%.1f*%.1f=%.1f", num1, num2, num1 * num2);break;case '/':printf("%.1f/%.1f=%.1f", num1, num2, num1 / num2);break;default:printf("Error! operator is not correct");break;}
}

颠倒字符串(递归)

void Reverse() {char c;scanf_s("%c", &c);if (c != 'n') {Reverse();printf_s("%c",c);}
}
int main() {printf_s("Enter a sentence:");Reverse();return 0;
}

实现二进制与十进制之间的相互转换

int decimal_binary(int n) {int rem, i = 1, binary = 0;while (n!=0) {rem = n % 2;n / 2;binary += rem * i;i *= 10;}return binary;
}
int binary_deciaml(int n) {int decimal = 0, i = 0, rem;while (n!=0){rem = n % 10;n / 10;decimal += rem * pow(2, i);++i;}return decimal;
}

使用多维数组实现两个矩阵的相加

int TwoRectangleAdd() {int r, c, a[100][100], b[100][100], sum[100][100], i, j;printf("Enter number of rows(between 1 and 100):");scanf_s("%d",&c);printf("n Enter elements of lst martix:n");for ( i = 0; i < r; i++){for (j == 0; j < c;j++) {printf("Enter element a%d%d",i+1,j+1);scanf_s("%d",&a[i][j]);}
}
printf("Enter elements of 2nd matrix:n");
for ( i = 0; i < r; i++)
{for (j = 0; j < c; j++) {printf("Enter element a%d%d",i+1,j+1);scanf_s("%d",&b[i][j]);}}
/*Adding Two matrices*/
for ( i = 0; i < r; i++)
{for (j = 0; j < c; j++) {sum[i][j] = a[i][j] + b[i][j];}}
/*Displaying th resultant sum matrix.*/
printf("nSum of two matrix is:nn");
for ( i = 0; i < r; i++)
{for ( j = 0; j < c; j++){printf("%d",sum[i][j]);if (j==c-1) {printf("nn");}}
}
}

数组[N]排序

#define N 10int main() {int a[N], i,j,t;for (i = 0; i < N; i++)scanf("%d",&a[i]);for (i = 0; i < N-1; i++) {for (j =i+1; j < N; j++) {if (a[i] > a[j]) {t = a[i]; a[i] = a[j]; a[j] = t;}}}/*冒泡排序for (i = 0; i < N; i++) {for (j =0; j < N-1-i; j++) {if (a[j] > a[j+1]) {t = a[j]; a[j] = a[j+1]; a[j+1] = t;}}}*/for (i = 0; i < N; i++)printf("%dt",a[i]);return 0;
}

输入一行小写字母后,将字母变成其下一字母(a->b,b->c,y->a)

(a变成b、b变成c、c变成d、…、x变成y、y变成z、z变成a)输出。
//第一种char s[100];	int i;printf("input a string:");for (i = 0; (s[i]=getchar())!= 'n'; i++) {s[i] = s[i] == 'z' ? 'a' : ++s[i];}s[i] = '';puts(s);
//第二种
char s[100];	int i;printf("input a string:");	gets(s);for (i = 0;s[i]; i++) {s[i] = s[i] == 'z' ? 'a' : ++s[i];}s[i] = '';puts(s);

完数( 一个数恰好等于它的真因子之和 )

真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身
6 its factor are1 ,2 ,3
28 its factor are1 ,2 ,4 ,7 ,14
496 its factor are1 ,2 ,4 ,8 ,16 ,31 ,62 ,124 ,248int sum, i, j;for (i = 2; i < 1000; i++) {sum = 0;for (j = 1; j <=i/2; j++) {if (i % j == 0)sum += j;}if (sum == i) {printf("%d its factor are",i);for (j = 1; j <= i / 2; j++) {if (i % j == 0 && j != 1) {printf(",");}if (i % j == 0) {printf("%d ", j);}}printf("n");}}

水仙花数

int digit, k, m, s;for (k = 1; k <= 1000; k++) {s = 0; m = k;while (m != 0) {digit = m % 10;s += digit * digit * digit;m /= 10;}if (s == k) {printf("%dn", s);}}int i, g, s, b;for (i = 1; i <1000; i++) {g = i % 10;s = i / 10 % 10;b = i / 100;if (i == (g * g * g + s * s * s + b * b * b)) {printf("%dn",i);}}

2568 sum=2+5+6+8

int n;scanf("%d", &n);int a[10], j = 0, sum = 0;while (n) {a[j] = n % 10;sum += a[j];n /= 10;j++;}printf("%d=", sum);for (j--; j >= 0; j--) {printf("%d", a[j]);if (j != 0)printf("+");}

回文字符串

char str[50], * p = str;int i = 0, j;gets(str);while (*p++)i++;for (j = 0; j < i; j++, i--)if (str[j] != str[i - 1])break;if (i == j || j - i == 1) printf("%s是回文字符串n", str);else printf("%s不是回文字符串n", str);
//2种
char s[256];gets(s);int i, j, flag =1;for (i = 0, j = strlen(j) - 1; i < j; i++, j--) {if (s[i] != s[j]) {flag =0; break;}}if (flag)printf("%s是回文字符串n", s);else printf("%s不是回文字符串n", s);

若干字符串,从大到小排序

int n,i,j;char* str[4] = { "adsadsa","weqw","gfg","czxcc" };for (i = 0; i <3; i++) {for (j = i + 1; j < 4; j++) {if (strcmp(str[i], str[j]) < 0) {char* temp = str[i];str[i] = str[j];str[j] = temp;}}}for (i = 0; i < 4; i++)puts(str[i]);

一个长度N的字符串从K个字符起,删去M个字符,组成长度N-M(N,M<=80,k<=N)

//We are poor students->We are students
void removeStr(char* str, int k, int m) {char* s = str;while (m) {s[k] = 0;k++, m--;}strcat(str, &s[k]);
}

写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换。

#include<stdio.h>void PrintArray(int ar[3][3])
{for(int i=0; i<3; ++i){for(int j=0; j<3; ++j){printf("%d ", ar[i][j]);}printf("n");}
}void ReverseArray(int ar[3][3])
{int tmp;for(int i=0; i<3; ++i){for(int j=0; j<i; ++j){if(i != j) //中间数不发生变化{//交换两个数tmp = ar[i][j];ar[i][j] = ar[j][i];ar[j][i] = tmp;}}}
}int main()
{int array[3][3] = {{1,2,3},{4,5,6},{7,8,9}};printf("转置前:n");PrintArray(array);//进行数组转置ReverseArray(array);printf("转置后:n");PrintArray(array);return 0;
}

如输人1990,应输出“1 9 9 0”。

//写一个函数,输人一个4位数字, 要求输出这4个数字字符,但每两个数字间空一个空格。
void OutString(char str[])
{int i = 0;while (str[i] != ''){printf("%c", str[i]);if (str[i + 1] == '') //清除最后一个空格不输出break;putchar(' ');i++;}printf("n");
}

写一个函数,输人一行字符,将此字符串中最长的单词输出。

void LongestWord(char str[], char word[])
{int max_len = 0;int len = 0;int i = 0;while (str[i] != ''){if (str[i] == ' '){str[i] = '';len = strlen(str);if (len > max_len){max_len = len;strcpy(word, str);str = str + len + 1;}}i++;}
}

起泡法(冒泡排序)

#include<stdio.h>
#include<string.h>void BubbleSort(char str[])
{int i, j;char tmp;int len = strlen(str);for(i=0; i<len-1; ++i){for(j=0; j<len-i-1; ++j){if(str[j] > str[j+1]){tmp = str[j];str[j] = str[j+1]; str[j+1] = tmp;}}}
}int main()
{int i;char str[11] = {0};printf("请输入10个字符:>");for(i=0; i<10; ++i)scanf("%c", &str[i]);BubbleSort(str);printf("string sorted: %sn", str);return 0;
}

二分查找 (折半查找法)

①输人10个职工的姓名和职工号;
②按职工号由小到大顺序排序,姓名顺序也随之调整;
③要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人要查找的职工号,输出该职工姓名。
#include<stdio.h>#define N 10void input(int num[], char name[N][8])
{int i;for (i = 0; i < N; i++){printf("input NO.: ");scanf("%d", &num[i]);printf("input name: ");getchar();gets(name[i]);}
}void sort(int num[], char name[N][8])
{int i, j, min, templ;char temp2[8];for (i = 0; i < N - 1; i++){min = i;for (j = i; j<N; j++)if (num[min]>num[j])  min = j;templ = num[i];strcpy(temp2, name[i]);num[i] = num[min];strcpy(name[i], name[min]);num[min] = templ;strcpy(name[min], temp2);}printf("n result:n");for (i = 0; i < N; i++)printf("n %5d%10s", num[i], name[i]);
}void search(int n, int num[], char name[N][8])
{int top, bott, mid, loca, sign;top = 0;bott = N - 1;loca = 0;sign = 1;if ((n<num[0]) || (n>num[N - 1]))loca = -1;while ((sign == 1) && (top <= bott)){mid = (bott + top) / 2;if (n == num[mid]){loca = mid;printf("NO. %d , his name is %s.n", n, name[loca]);sign = -1;}else if (n < num[mid])bott = mid - 1;elsetop = mid + 1;}if (sign == 1 || loca == -1)printf("%d not been found.n", n);
}int main()
{int num[N], number, flag = 1, c;char name[N][8];input(num, name);sort(num, name);while (flag == 1){printf("ninput number to look for:");scanf("%d", &number);search(number, num, name);printf("continue ot not(Y/N)?");getchar();c = getchar();if (c == 'N' || c == 'n')flag = 0;}return 0;
}

写一个函数,输人一个十六进制数,输出相应的十进制数。

#include<stdio.h>size_t HextoDec(char s[])
{size_t i, n;n = 0;for (i = 0; s[i] != ''; i++){if (s[i] >= '0'&& s[i] <= '9')n = n * 16 + s[i] - '0';if (s[i] >= 'a' && s[i] <= 'f')n = n * 16 + s[i] - 'a' + 10;if (s[i] >= 'A' && s[i] <= 'F')n = n * 16 + s[i] - 'A' + 10;}return n;
}
int main()
{size_t result = 0;char hex[9] = {0}; printf("input a HEX number:");scanf("%s", hex);result = HextoDec(hex);printf("0x%s = %un", hex, result);return 0;
}

用递归法将一个整数n转换成字符串。例如,输人483,应输出字符串”483”。n的位数不确定,可以是任意位数的整数。

#include<stdio.h>void Convert(int n)
{int i;if ((i = n / 10) != 0)Convert(i);putchar(n % 10 + '0');
}int main()
{int number;printf("input an integer: ");scanf("%d", &number);printf("output: ");if (number < 0){putchar('-');   //先输出一个负号'-'number = -number;}Convert(number);printf("n");return 0;
}

给出年、月、日,计算该日是该年的第几天。

#include <stdio.h>
#include<stdio.h>/* 函数sum_day:计算日期 */
int sum_day(int month, int day)        
{int day_tab[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int i;for (i = 1; i < month; i++)day += day_tab[i];      /* 累加所在月之前天数 */return day;
}                         /* 函数leap:判断是否为闰年 */
int leap(int year)
{int leap;leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;return leap;
}int main()
{int year, month, day, days;printf("input date(year,month,day):");scanf("%d %d %d", &year, &month, &day);printf("%d/%d/%d ", year, month, day);days = sum_day(month, day);                  /* 调用函数sum_day */if (leap(year) && month >= 3)                  /* 调用函数leap */days = days + 1;printf("is the %dth day in this year.n", days);return 0;
}

1234->9876,四位数+5,再%10,交换(1-3,2-4)

int a[10],n,m,count=0;scanf("%d", &n);while (n) {m = n % 10 + 5;a[count++] = m % 10;n /= 10;}for(int i=0; i< count; i++) {printf("%d",a[i]);}
//2.种int a, i, aa[4], t;scanf("%d", &a);aa[0] = a % 10;aa[1] = a/10%10;aa[2] = a/100%10;aa[3] = a/1000;for (i = 0; i <= 3; i++) {aa[i] += 5;aa[i] %= 10;}for (i = 0; i <= 3/2; i++) {t = aa[i];aa[i] = aa[3 - i];aa[3 - i] = t;}for (i = 3; i >= 0; i--)printf("%d", aa[i]);

252=2×5×2, 202=2×0×2

long int num, k=1;printf("please enter a number:n");scanf("%ld", &num);while (num) {k *= num % 10;num /= 10;};printf("n%ldn", k);

99=3×3×11(因式分解)

	int n, i;printf("请输入整数:");scanf("%d", &n);printf("%d=", n);for (i = 2; i <= n; i++) {while (n % i == 0) {printf("%d", i);n /= i;if (n != 1)printf("*");}}
//2种int a[20], count = 0,n;scanf("%d", &n);printf("%d=", n);for (int i = 2; i <= n; i++) {while (n % i == 0) {a[count++] = i;n = n / i;}}for (int i=0; i<count; i++) {printf("%d", a[i]);if (i!=count-1)printf("*");}

10-16进制 ,16进制转10进制

#include<stdio.h>
int main()
{int n,i=0,j;char a[100];scanf("%d",&n);if(n==0)printf("%d",n);else {while(n!=0){switch(n%16){	case 0:a[i]='0';break;case 1:a[i]='1';break;case 2:a[i]='2';break;case 3:a[i]='3';break;case 4:a[i]='4';break;case 5:a[i]='5';break;case 6:a[i]='6';break;case 7:a[i]='7';break;case 8:a[i]='8';break;case 9:a[i]='9';break;case 10:a[i]='A';break;case 11:a[i]='B';break;case 12:a[i]='C';break;case 13:a[i]='D';break;case 14:a[i]='E';break;case 15:a[i]='F';break;}n=n/16;i++;}for(j=i-1;j>=0;j--)printf("%c",a[j]);}return 0;
}#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{char a[100];int i;long long n=0;scanf("%s",&a);for (i=0;a[i]!='';i++){if(a[i]>='A' && a[i]<='F')a[i]=(a[i]-'A')+10+'0';n+=((a[i]-'0')*(pow(16,strlen(a)-1-i)));}printf("%lld",n);return 0;
}

获取字符串数组里,最长的一串字符串

char* ff(char p[][10], int n) {static char t[20];int i, max = 0;for (i = 0; i < n; i++) {if (strlen(p[i]) > max) {max = strlen(p[i]);strcpy(t, p[i]);}}return t;
}
int main()
{char p[][10] = { "abc","aavsd","avvd","cd","asdasdasd"};printf("%s", ff(p, 5));return 0;
}

1234567890,每个数字和

long fs(long n) {if (n != 0)return (n % 10 + fs(n / 10));else return 0;
}

插入排序

	
//插入排序,从大到小
int main(){
int a[10] = { 99,32,11,22,8,9,4,6,-22,5 };int i,j;for (i = 1; i < 10; i++) {for (j = i; i >0; j--) {if (a[j]>a[j - 1])swaps(&a[j],&a[j-1]);else break;}}for (i = 0; i < 10; i++) {printf("%dt", a[i]);}return 0;
}
//2种
int a[10] = { 99,32,11,22,8,9,4,6,-22,5 };int i,j;for (i =0; i <9; i++) {for (j =i+1; i<10; j++) {if (a[i]<a[j])swaps(&a[i],&a[j]);else break;}}for (i = 0; i < 10; i++) {printf("%dt", a[i]);}

 

冒泡排序

int i, j, c = 0, a[10] = {12,44,66,-23,44,55,66,212,-99,88};for (i = 0; i <10; i++) {for (j = 0; j < 9 - i; j++) {if (a[j]>a[j + 1]) {swaps(&a[j], &a[j + 1]);c = 1;}}if (c==0)break;
}
for (i = 0; i < 10; i++)printf("%dt", a[i]);

 

 

C语言 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。

在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。
已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放1次。
假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声//计算重复的炮声
int cf(int n,int m,int m2) {//n=n*m,m=5;int i,j,count=0;for (i = m; i<= n * m; i +=m) {for (j = m2; j <= n* m2; j += m2) {if (i == j) {count++;}}}return count;
}
int main()
{int sum = 21 * 3;//炮声:56重复,57重复,67重复sum -= cf(21, 5, 6) + cf(21, 5, 7) + cf(21, 6, 7);printf("%d",sum);	return 0;
}

'A',4-->BCDE(26个字母循首尾相连了)

void fun(char c, int d) {int i;char A[26], a[26], * ptr;for (i = 0; i < 26; i++) {A[i] = 'A' + i;a[i] = 'a' + i;}if (c >= 'a' && c <= 'z')	ptr = a;else	ptr = A;//重点是这里,字符-字符第一个,算出差for (i =1; i <= d; i++) {printf("%c",ptr[(c-ptr[0]+i)%26]);}
}

1+x+x^2/2! +x^3/3! +x^4/4!+......

double funS(double x, int n) {double f = 1, t=1;int i;for (i = 0; i < n; i++) {t *= x /(i + 1);f += t;}return f;
}

1234 ->4123->3412->2341

4123
3412
2341
1234
#define S 4
void fs(int *a) {int i, j, k, m;printf("input 4 number:");for (i = 0; i < S; i++)scanf("%d",a+i);printf("the result:n");for (i = S; i >0; i--) {k = a[S - 1];//截取最后一位for (j = S - 1; j > 0; j--) {a[j] = a[j - 1];}a[0] = k;//最后一位放到第一位for (m = 0; m < S; m++)printf("%d", a[m]);printf("n");}
}

123987-->1397

int n = 123987;int t,s=1,m=0;while (n) {if(n%2){t = n % 10;m+= t* s;s = s * 10;   }n /= 10;}printf("%d", m);

123987--->789321

int n = 123987;int t,s=0;while (n) {t = n % 10;s = s * 10 + t;n /= 10;}printf("%d", s);

abcdabssswwabdd 最后子串ab -- 99,替换 返回abcdabsssww99dd

void kk(char* s, char* t1, char* t2, char* w) {char* p, * r, * a = s;strcpy(w, s);//找到最后ab的位置while (*w) {p = w, r = t1;while (*r) {if (*r == *p)	r++, p++;else break;if (*r == '')a = w;}w++;}//99->abr= t2;while (*r) {*a = *r; a++, r++;}
}
int main()
{char s[100] = { 0 }, t1[100] = { 0 }, t2[100] = {0}, w[100];gets(s);	gets(t1);	gets(t2);if (strlen(t1)==strlen(t2)) {kk(s,t1,t2,w);puts(w);}else	printf("strlen(t1)!=strlen(t2)n");return 0;
}

计算字符串里的单词,空格为分隔符

char string[81];int i, num = 0, word = 0;char c;gets(string);for (i = 0; (c = string[i])!=''; i++)if (c ==' ') word = 0;else if (word == 0){word = 1;num++;}printf("There are % d words in this linen", num);

幻方,魔法阵

int funL(int(*a)[N]) {int i, j, m1, m2, row, colum;m1 = m2 = 0;for (i = 0; i < N; i++) {j = N - i - 1;m1 += a[i][i];m2 += a[i][j];}if (m1 != m2)return 0;for (i = 0; i < N; i++) {row = colum = 0;for (j = 0; j < N; j++) {row += a[i][j];colum += a[j][i];}if ((row != colum) || (row != m1))return 0;}return 1;
}
int main(){int x[N][N], i, j;for (i = 0; i < N; i++)for (j = 0; j < N; j++)scanf("%d", &x[i][j]);printf("nArray:n");for (i = 0; i < N; i++) {for (j = 0; j < N; j++)printf("%d", x[i][j]);printf("n");}if (funL(x))printf("the Array is a magic squaren");else printf("not");return 0;
}

1 4 2 3 9 6 5 8 7-->9 1 8 2 7 3 6 4 5

//最大,最小,次大,次小
void funM(int a[]) {int i, j, max, min, px, pn, t;for (i = 0; i < 9 - 1; i += 2) {max = min = a[i];px = pn = i;for (j = i + 1; j < 9; j++) {if (max < a[j]) {max = a[j]; px = j;}if (min > a[j]) {min = a[j]; pn = j;}}if (px != i) {t = a[i];a[i] = max;a[px] = t;if (pn == i)pn = px;}if (pn!=i+1) {t = a[i+1];a[i+1] = min;a[pn] = t;}}
}

ABCDE -->EDCBAABCDE

void funB(char* s, char* t) {int i, s1;s1 = strlen(s);for (i = 0; i < s1; i++) {t[i] = s[s1 - i-1];}for (i = 0; i < s1; i++) {t[s1+i] = s[i];}t[2 * s1] = '';
}int main(){char s[100], t[100];gets(s);funB(s, t);puts(t);return 0;
}
//指针法
void funB(char* s, char* t) {while (*s)s++;s--;for (int i = 0; i <strlen(s); i++, t++, s--) {*t = *s;}s++;while (*t++ = *s++);
}

ababsdaabdwq中ab的个数:3

int opq(char* s, char* t) {char* p, * r;int n = 0;while (*s) {p = s, r = t;while (*r) {if (*p == *r) {p++, r++;}else break;}if (*r =='')n++;s++;}return n;
}

字符串转数字(包含负数)

long fnhh(char* p) {int i,flag, len = strlen(p);flag = 1, i = 0;long x = 0;if (*p == '-') {p++;i++;flag = -1;}else if (*p == '+') {p++;i++;}for (; i < len; i++, p++) {x = x * 10 + *p - '0';}x*=flag;return x;
}

一个字符串末尾,超过n个,就除去多余的

void funuu(char* a, int n) {int i=0, k = 0;char* p, * t;p = t = a;while (*t)t++;t--;while (*t == '*') {k++;t--;}//*的个数>n的话就删除掉超过n的*if (k > n) {while (*p && p < t + n + 1) {a[i] = *p;i++;p++;}a[i] = '';}
}

abcde 指定删除下标3 -->abce

void jj(char a[], int n) {int i, k = 0;char* b = a;for (i = 0; a[i]!=''; i++) {if (i != n)b[k++] = a[i];}b[k] = '';
}

插入一个数,按原先的排序输出

int a[11] = { 0 };int i, j, temp;printf("请输入10个整数:n");for (i = 0; i < 10; i++)scanf("%d", &a[i]);for (i = 0; i < 9; i++) {for (j = 0; j < 9 - i; j++) {if (a[j]<a[j + 1]) {temp = a[j], a[j] = a[j + 1], a[j + 1] = temp;}}}
printf("ninput anumber:");scanf("%d",&temp);for (i = 0; i < 10; i++) {if (temp > a[i]) {break;}}//往后移for(j = 9; j >=i; j--) {a[j + 1] = a[j];}a[i] = temp;printf("n插入后从大到小排序后:n");for (i = 0; i < 11; i++)printf("%dt",a[i]);

从大到小,双向插入排序

	int i, j, k, t;int a[] = { 40,23,45,66,21,440 };int len = sizeof(a) / sizeof(a[0]);int flag;for (k = 0; k < len / 2; k++) {flag = 0;for (i = 0; i <= k; i++) {for (j = i; j > 0 && a[j] < a[j + 1]; j++) {flag = 1;t = a[j], a[j] = a[j + 1], a[j + 1] = t;}}for (i = len; i > k; i--) {for (j = i; j<len && a[j]>a[j - 1]; j++) {flag = 1;t = a[j], a[j] = a[j-1], a[j-1] = t;}}if (flag == 0)break;}for (i = 0; i < len; i++)printf("%dt", a[i]);c

对半查找

char a[12] = "adfgikmnprs", c;puts(a);int i, left=0, right=11, mid;printf("input a character:n");scanf("%c", &c);while (left <=right) {mid = (left + right) / 2;if (c == a[mid]) {printf("the position is :%dn", mid + 1);break;}else if (c > a[mid]) left = mid + 1;else right = mid - 1;}	if (left > right)printf("不在a字符串里n");

输入若干个数,统计0-4,统计统同一的整数个数

	int a[50], c[5] = {0}, i, n = 0, x;printf("enter 1-4,to end with -1n");scanf("%d", &x);while (x != -1) {if (x >= 0 && x <= 4) {a[n++] = x;scanf("%d", &x);}else scanf("%d", &x);}for (i = 0; i < n; i++) {c[a[i]]++;}printf("the result is:n");for (i = 0; i <5; i++) {printf("%d:%dn", i, c[i]);}

两个数组(a,b)分别依次把小的数加入第三个数组里(c)

int a[8] = { 3,6,7,9,11,14,18,20 };int b[5] = { 1,2,13,15,17 };int c[13];int i = 0, j = 0, k = 0;while (i < 8 && j < 5) {if (a[i] < b[j])c[k++] = a[i++];else c[k++] = b[j++];}while (i < 8)c[k++] = a[i++];while (j< 5)c[k++] = a[j++];for (i = 0; i < 13; i++)printf("%dt", c[i]);

 

 

本文发布于:2024-01-27 20:14:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063576662399.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:湖北   习题   专升本   语言
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23