整数算法
1、输入5个数(含负数、小数)将它们按由小到大的顺序排列起来。
#include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int i, j; float a[30]; float tmp = 0.0; for(i = 1; i < argc; i++) { printf("%s ", argv[i]); a[i] = atof(argv[i]); } printf("\n"); //冒泡 for(i = 0; i < argc - 2; i++)//减去本身这个参数 { for(j = 1; j < argc - 1 - i; j++) { if(a[j] > a[j + 1]) { tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } printf("Output: "); for(i = 1; i < argc; i++) { printf("%.3f ", a[i]); } printf("\n"); return 0; } 输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1 5 7
字符串问题
2、请编写一个C函数,该函数将一个字符串逆序。
//请编写一个C函数,该函数将一个字符串逆序 #include<stdio.h> #include<string.h> void soft(char *ch) { char tmp; char *end = ch + strlen(ch) - 1; while(end > ch) { tmp = *ch; *ch = *end; *end = tmp; --end; ++ch; } } int main() { char ch[30] = {0}; char *p = ch; printf("输入字符串:"); scanf("%s", p); soft(ch); printf("%s ", p); printf("\n"); return 0; }
3、编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
#include<stdio.h> void change(int num, int n) { int r; r = num % n; //任意数可以用除以进制的方法算出进制表达式 if(num > 0) { change (num / n, n); } printf("%d", r); } int main() { int num,n; printf("Please enter a number: "); scanf("%d", &num); printf("输入要转换的进制: ", &n); scanf("%d", &n); change(num, n); printf("\n"); return 0; }
4、输入一个字符串,计算字符串中子串出现的次字数。
#include<stdio.h> #include<string.h> int main() { char a[100]; printf("输入字符串:"); scanf("%s", a); char *c = a; char b[10]; printf("输入字串:"); scanf("%s", b); char *d = b; int n; int num = 0; n = strlen(d); while(strlen(c) > 0) { if(strncmp(c,d,n) == 0) { num++; //次数计数 c = c + n; } else { c++; } } printf("%d\n",num); return 0; }