挑选几个喜欢的程序以备日后回顾
- 编写程序,显示哪些数字有重复
#include <stdio.h>
#include <stdbool.h>
#define N 10
int main(void){
bool digit_in[N]={false};
int digit_out[N]={0};
int digit=0,i=0;
long n=0;
printf("enter a number : ");
scanf("%ld",&n);
while(n>0){
digit=n%10;
if(digit_in[digit]){
digit_out[digit]=digit;
}
digit_in[digit]=true;
n=n/10;
}
printf("repeated digits ");
for(i=0;i<10;i++){
if(digit_out[i]){
printf("%d ",digit_out[i]);
continue;
}
}
return 0;
}
- 编写程序,打印出一份列表,显示出每个数字在数中出现的次数
#include <stdio.h>
#define N 10
int main(void){
long n=0;
int i=0,j=0,digit=0;
int digit_out[N]={0};
printf("enter a number");
scanf("%d",&n);
while(n>0){
digit=n%10;
digit_out[digit]++;
n=n/10;
}
printf("digit : \t");
for(i=0;i<10;i++){
printf("\t%d",i);
}
printf("\noccurrences : \t");
for(j=0;j<10;j++){
printf("\t%d",digit_out[j]);
}
return 0;
}
- 编写程序,使用户可以录入多个数进行重复数字的判断,当小于0时停止
#include <stdio.h>
#define N 10
int main(void){
long number[N]={0};
int digit_out[N]={0};
int i=0,digit=0,m=0,j=0;
long n=0;
do{
printf("enter a number : ");
scanf("%d",&n);
if(n<=0){
break;
}
number[i]=n;
i++;
}while(1);
for(m=0;m<10;m++){
while(number[m]>0){
digit=number[m]%10;
digit_out[digit]++;
number[m]/=10;
}
}
printf("digit : \t");
for(i=0;i<10;i++){
printf("\t%d",i);
}
printf("\noccurrences : \t");
for(j=0;j<10;j++){
printf("\t%d",digit_out[j]);
}
return 0;
}
- 编写程序,利用表达式
sizeof(a)/sizeof(a[0])
来计算数组长度
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define SIZE (int)(sizeof(a)/sizeof(a[0]))
int main (void){
int a[N]={0},i=0;
printf("Enter %d numbers: ",N);
for(i=0;i<SIZE;i++){
scanf("%d",&a[i]);
}
printf("In reverse order: ");
for(i=SIZE-1;i>=0;i--){
printf(" %d",a[i]);
}
printf("\n");
return 0;
}
- 编写程序,可以读取用户录入的信息并翻译成B1FF的表达格式
#include <stdio.h>
#include <ctype.h>
#define N 100
int main(void){
int i=0,j=0;
char ch;
char ch_in[N],ch_out[N];
printf("enter message : ");
while(1){
ch=getchar();
if(ch!='\n'){
ch_in[i]=ch;
i++;
}
if(ch=='\n'){
break;
}
}
for(j=0;j<=i;j++){
ch_out[j]=toupper(ch_in[j]);
switch(ch_out[j]){
case 'A' : ch_out[j]='4'; break;
case 'B' : ch_out[j]='8'; break;
case 'E' : ch_out[j]='3'; break;
case 'I' : ch_out[j]='1'; break;
case 'O' : ch_out[j]='0'; break;
case 'S' : ch_out[j]='5'; break;
}
printf("%c",ch_out[j]);
}
printf("!!!!!!!!!!");
return 0;
}
- 编写程序,读取5×5的整数数组,然后显示每行与每列的和
#include <stdio.h>
#define N 5
int main(void){
int i=0,j=0,row=0,m=0,n=0,sum=0;
int number[N][N];
for(i=0;i<5;i++){
row=i+1;
printf("enter row %d : ",row);
for(j=0;j<5;j++){
scanf("%d",&number[i][j]);
}
}
printf("row totals : \t");
for(m=0;m<5;m++){
sum=0;
for(n=0;n<5;n++){
sum=sum+number[m][n];
}
printf("%d\t",sum);
}
printf("\n");
printf("column totals : \t");
for(n=0;n<5;n++){
sum=0;
for(m=0;m<5;m++){
sum=sum+number[m][n];
}
printf("%d\t",sum);
}
return 0;
}
- 编写程序,生成10×10的“随机步法”
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
//0 up 1 left 2 down 3 right
int main(void){
char letter=65;
int ti=0,m=0,n=0,i=0,row=0,column=0,a=0,b=0;
srand((unsigned) time(NULL));
char ch[N][N];
for (a = 0; a < N; a++) {
for (b = 0; b < N; b++) {
ch[a][b] = '.';
}
}
// ch[0][0]=letter;
while(i!=26){
ti=rand()%4;
switch(ti){
case 0 : {
if(ch[m-1][n]=='.'&&m-1>=0){
m--;
ch[m][n]=letter+i;
i++;
}
continue;
}
case 1 :{
if(ch[m][n-1]='.'&&n-1>=0){
n--;
ch[m][n]=letter+i;
i++;
}
continue;
}
case 2 : {
if(ch[m+1][n]=='.'&&m+1>=0){
m++;
ch[m][n]=letter+i;
i++;
}
continue;
}
case 3 : {
if(ch[m][n+1]=='.'&&n+1>=0){
n++;
ch[m][n]=letter+i;
i++;
}
continue;
}
}
}
i=0;
for(row=0;row<10;row++){
for(column=0;column<10;column++,i++){
if(i%10==0){
printf("\n");
}
printf("%c",ch[row][column]);
}
}
return 0;
}
- 编写程序,将电话号码中的字母翻译成数字
#include <stdio.h>
int main(void){
int ch,i=0,j=0;
char c[15];
printf ("enter phone number: ");
while ((ch = getchar ()) != '\n') {
if (ch <= 'Z'&&ch >= 'A') {
switch (ch) {
case 65: case 66: case 67:
c[i] = '2';
break;
case 68: case 69: case 70:
c[i] = '3';
break;
case 71: case 72: case 73:
c[i] = '4';
break;
case 74: case 75: case 76:
c[i] = '5';
break;
case 77: case 78: case 79:
c[i] = '6';
break;
case 81: case 82: case 83: case 80:
c[i] = '7';
break;
case 84: case 85: case 86: case 87:
c[i] = '8';
break;
case 88: case 89: case 90:
c[i] = '9';
break;
}
i++;
continue;
}
c[i] = ch;
i++;
}
printf("in numeric form : ");
for (j = 0; j < i; j++) {
printf("%c", c[j]);
}
return 0;
}
- 编写程序,录入姓名后按照固定格式输出
#include <stdio.h>
int main(void){
char a[20];
char ch1, ch2;
int i=0,j=0;
printf ("enter a first and last name: ");
scanf ("%c", &ch1);
while ((ch2 = getchar()) != '\n') {
a[i] = ch2;
i++;
}
printf("you enered the name: ");
for (j = 1;j < i;j++) {
printf("%c", a[j]);
}
printf(", %c.", ch1);
return 0;
}
- 编写程序,能进行凯撒加密和解密
#include <stdio.h>
#define N 80
int main(void){
char sen[N], sen1[N];
int n=0,i=0,j=0;
printf("enter message to be encrypted : ");
for (i=0; ;i++) {
sen[i] = getchar();
if (sen[i] == '\n') break;
}
printf("enter shift amout (1~25) : ");
scanf("%d",&n);
printf("encrypted message : ");
for (j=0;j<i+1;j++){
if (sen[j] <= 'z' && sen[j] >= 'a') {
printf("%c", ((sen[j] - 'a') + n) % 26 + 'a');
} else if (sen[j] <= 'Z' && sen[j] >= 'A') {
printf("%c", ((sen[j] - 'A') + n) % 26 + 'A');
} else {
printf("%c", sen[j]);
}
}
return 0;
}