1.编程从键盘输入若干字符,直到输入字符’*’为止,统计其中的字母字符、数字字符、空格符及其他字符的个数并输出统计结果。
#include <stdio.h>
#include <string.h>
void main(){
char str[30];
int i,space=0,strings=0,other=0,num=0;
printf("随意输入");
gets(str);
for(i=0;i<30;i++){
if(str[i]>='a'&&(str[i]<='z')){
strings++;
}else if(str[i]==' '){
space++;
}else if(str[i]=='*'){
other=i-strings-space-num;
break;
}else if(str[i]>='0'&&str[i]<='9'){
num++;
}
}
printf("数字%d字母%d空格%d其他%d",num,strings,space,other);
}
也可以直接用getchar取值判断:
char c;
while((c=getchar())!='*'){
if(c>='a'&&c<='Z')
......//不变
}
- 用一张百元纸币兑换一元、二元和五元的纸币,要求兑换后纸币的总数为50 张,问共有多少种换法? 每种换法中各面值的纸币分别为多少张?
//第二题
#include <stdio.h>
void main() {
int sum,mon,t=0, i, j, k;
for (i = 0; i <= 100;i++) {
for (j = 0; j <= 50; j++) {
for (k = 0; k <= 20; k++) {
mon = i + j * 2 + k * 5;
sum = i + j + k;
if (sum==50&&mon==100) {
t++;
}
}
}
}
printf("共有%d种方法", t);
getchar();
3、数组数据排序
#include <stdio.h>
void main() {
int a[5] = { 5,3,1,4,2 };
int i, j, min, tmp;
for (i = 0; i <= 4; i++) {
min = i;
for (j = i + 1; j < 5; j++) {
if (a[min] > a[j]) {
min = j;
}
}
if (min != i) {
tmp = a[i]; a[i] = a[min]; a[min] = tmp;
}
}
for (i = 0; i < 5; i++) {
printf("%d", a[i]);
}
getchar();
}
4、二分查找法
#include <stdio.h>
void main() {
int a[9] = { 2,5,8,9,25,32,46,53,86 };
int x, low = 0, mid, high = 8, loc = -1;
scanf("%d", &x);
while (low <= high) {
mid = (low + high) / 2;
if (x < a[mid]) {
high = mid - 1;
}
else if (x > a[mid]) {
low = mid + 1;
}else{
loc = mid;
break;
}
}
if (loc == -1) {
printf("查无此数");
}
else {
printf("%d位置在:%d", x, loc + 1);
}
getchar(); getchar(); getchar();
}