字符统计 again 时限新葡京32450网址:,大写字母、小写字母、空格以及数字字符的个数

发布时间:2020-01-20  栏目:新葡京32450网址  评论:0 Comments

用指针实现字符统计 时限:1000ms 内存限制:10000K  总时限:3000ms

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
  char a[3][80];
  int
i,j,upper,lower,num,blank,orther;
  upper=lower=num=blank=orther=0;
  for(i=0;i<3;i++)
  {
      for(j=0;j<80;j++)
      {
         scanf(“%c”,&a[i][j]);
      }
      //gets(a[i]);
  }
  for(i=0;i<3;i++)
  {
      for(j=0;j<80;j++)
      {
         if (isupper(a[i][j]))
         upper++;
         else if (islower(a[i][j]))
         lower++;
         else if (isdigit(a[i][j]))
         num++;
         else if ((a[i][j])==’
‘)
         blank++;
         else
         orther++;
      }

时限:1000ms 内存限制:10000K  总时限:3000ms

一、指针 用指针方法编写一个程序,输入 3
个整数,将它们按由小到大的顺序输出

题库的操作题(未完),题库操作题

/*编写函数,实现从键盘上输入一个小写字母,将其转化为大写字母。*/ 
/* 
#include<stdio.h> 
int zhuanhua(char s); 
void main(){ 
    char s; 
    printf(“请输入一个字符:”); 
    scanf(“%c”,&s); 
    printf(“转化前为:%c\n”,s); 
    s=zhuanhua(s); 
    printf(“转化后为:%c\n”,s); 

int zhuanhua(char s){ 
    char S; 
    S=s-32; 
    return S; 

*/ 
/*计算并输出500以内最大的10个能被13或17整除的自然数之和*/

/* 
#include<stdio.h> 
int jisuan(int n);

void main(){ 
    int n=500; 
    printf(“和是%d\n”,jisuan(n)); 

int jisuan(int n){ 
    int i,sum=0; 
    for(i=1;i<n;i++) 
        if(i%13==0||i%17==0) 
            sum+=i; 
    return sum; 

*/ 
/*将字符串str中的小写字母全部转换成大写字符串。函数原型可声明为:“void 
toUpperCase( char  str[ ]) ; ”*/ 
/* 
#include <stdio.h> 
#include<string.h> 
#define N 10 
void  toUpperCase( char  str[ ]);

void main(){ 
    char str[N]; 
    printf(“请输入一个字符串:”); 
    gets(str); 
    toUpperCase(str); 
    printf(“交换后的字符串为:”); 
    puts(str); 
   


void  toUpperCase( char  str[ ]){ 
    int i; 
    for(i=0;;i++){ 
        if(str[i]!=’\0′) 
            str[i]=str[i]-32; 
        else 
            break; 
    } 

*/

【编写函数,将一个字符串的全部有效元素逆置。函数原型可声明为“void
reverseStr( char * str ) ;”,参数str为指向字符串的指针。】
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void reverseStr( char *str );

int main( )
{
char str[100];
puts(“请输入字符串:”);
gets(str);
reverseStr( str );
puts(“逆转后的字符串:”);
puts( str );
return 0;
}

void reverseStr( char *str )
{
char tmp;
char *pi, *pj;
pi = str;
pj = str + strlen( str ) – 1;
while (pi < pj )
{ tmp = *pi; *pi = *pj; *pj = tmp;
++pi; –pj;
}
}

<br/>

1)Fill the blanks of the following program. Function:output by the
character w, such as W-shaped structure into a graphical.
w ww w
w w w w
w w w w
w w w w
ww ww
#include <stdio.h>
void draw(int n)

int i, j, k, r, m;
for(i=1; ① ;i++)
{
for(j = 1; j <= 2; j++)
{
for(r = 1; r < i; r++) printf(” “);
printf(“w”);
for(k = 1; ② ; k++) printf(” “);
printf(“w”);
for(m = 1; m < i; m++) printf(” “);
}
③ ;
}
}
#include <conio.h>
int main( )
{
int n;
printf(“input a number:”);
④ ;
draw(n);
return 0;
}
答案:①i <= n;②k<=2*(n-i);③ printf(“\n”);④scanf(“%d”, &n);
<br/>

编写函数,将一个整型数组的全部元素逆序存储,即若原来数组元素分别为12345,逆序存储后数组各元素变为54321。函数原型可声明为“void
reverse( int * p , int n
);”,参数p为指向数组的指针,n为数组中的元素个数。
答案:
程序代码如下:
#include <stdio.h>

void reverse( int *p, int n );

int main( )
{
int arr[10];
int i;
printf(“请输入10个整数:”);
for(i=0; i<10; i++)
scanf(“%d” , &arr[i]);
reverse ( arr, 10); 
printf(“逆序存储后:”);
for(i=0; i<10; i++)
printf(“%5d” , arr[i]);
printf(“\n”);
return 0;
}

void reverse( int *p, int n )
{
int *pi, *pj;
int tmp;
pi = p;
pj = p + n – 1;
while ( pi < pj )
{
tmp = *pi; *pi = *pj; *pj = tmp;
pi++; pj–;
}
}

<br/>

编写程序,用有参有返回值函数实现判断三个数是否能构成三角形。函数原型可声明为:“int
isTriangle( double a, double b, double c
);”,其中,a,b,c为三角形的三条边,返回值为0或1,0代表不能构成三角形,1代表能构成三角形。请在主函数中调用该函数完成程序的功能。
答案:
程序代码如下:
#include <stdio.h>
int isTriangle( double a, double b, double c);//函数声明

int main( )
{
double ea, eb, ec;//三角形的三条边
int result; //是否是三角形的判断结果
printf(“Please input the three edges of a triangle:”);
scanf(“%lf%lf%lf”, &ea, &eb, &ec);
result = isTriangle( ea, eb, ec ); //函数调用
if( 0 == result )
printf(“这组边长不能构成三角形\n”);
else
printf(“这组边长可以构成三角形\n”);
return 0;
}

int isTriangle( double a, double b, double c ) //函数定义
{
if( a > 0 && b > 0 && c > 0 && a + b > c && b + c > a &&
c + a > b )
//三角形任意边长大于0,且 任意两边之和大于第三边
return 1; //可以构成三角形
else
return 0; //不能构成三角形
}
程序运行结果如下:

<br/>

(2)Write a program that takes an integer keyed in from the terminal
and extracts and displays each digit of the integer in English. So, if
the user types 932, the program should display “ nine three two”.
答案:
程序代码如下:
#include <stdio.h> 
int main( )
{
int num;
int iDigit; //每一位上的数字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //当该数不为0时,继续提取其个位上的数字
{
iDigit = num % 10; //提取个位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉该数的个位
}
printf(“\n”);
return 0;
}

<br/>
rite a program that takes an integer keyed in from the terminal and
extracts and displays each digit of the integer in English. So, if the
user types 932, the program should display “ nine three two”.
答案:
程序代码如下:
#include <stdio.h> 
int main( )
{
int num;
int iDigit; //每一位上的数字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //当该数不为0时,继续提取其个位上的数字
{
iDigit = num % 10; //提取个位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉该数的个位
}
printf(“\n”);
return 0;
}
<br />
(2)Write a program that takes an integer keyed in from the terminal
and extracts and displays each digit of the integer in English. So, if
the user types 932, the program should display “ nine three two”.
答案:
程序代码如下:
#include <stdio.h> 
int main( )
{
int num;
int iDigit; //每一位上的数字
printf(“Pleasse input an integer:”);
scanf(“%d”, &num);
while ( num ) //当该数不为0时,继续提取其个位上的数字
{
iDigit = num % 10; //提取个位
switch ( iDigit )
{
case 0: printf(“Zero “); break;
case 1: printf(“One “); break;
case 2: printf(“Two “); break;
case 3: printf(“Three “); break;
case 4: printf(“Four “); break;
case 5: printf(“Five “); break;
case 6: printf(“Six “); break;
case 7: printf(“Seven “); break;
case 8: printf(“Eight “); break;
case 9: printf(“Night “); break;
}
num /= 10; //去掉该数的个位
}
printf(“\n”);
return 0;
}

(3)Write a function to calculate the absolute value of x.
答案:
程序代码如下:
#include <stdio.h>
double absoluteValue( double x );

int main( )
{
double x;
printf(“请输入x:”);
scanf(“%lf”, &x);
printf(“Absolute Value of x is: %lf\n”, absoluteValue( x ) );

printf(“请输入x:”); //第二次调用函数
scanf(“%lf”, &x);
printf(“Absolute Value of x is: %lf\n”, absoluteValue( x ) );
return 0;
}

double absoluteValue( double x )
{
if ( x > 0 )
return x;
else
return – x;
}

(4)从键盘输入10个互不相同的整数,找出其中最小的元素将其与数组中的第一个元进行交换。
答案:
程序代码如下:
#include <stdio.h>

void getMin( int a[ ], int n); //函数声明

int main( )
{
int array[10];
int i;
printf(“请输入10个互不相等的整数:”);
for ( i=0; i<10; ++i)
scanf(“%d”, &array[i]);

getMin( array , 10 ); //调用函数来实现功能

printf(“将最小值换到第1个元素后:”);
for ( i=0; i<10; ++i)
printf(“%5d”, array[i]);
printf(“\n”);
return 0;
}

void getMin( int a[ ], int n) //函数定义
{
int i;
int tmp;
int minid=0;
for( i=1; i<n; ++i)
if ( a [i] < a [minid] )
minid = i;
//将最小值换到第1个元素
tmp = a[0];
a[0] = a[minid];
a[minid] = tmp;
}

(5)有10本图书,从键盘输入每本图书的价格后,找出价格最高的图书并输出其价格。
答案:
程序代码如下:
#include <stdio.h>

double getMaxPrice( double a[ ], int n); //函数声明

int main( )
{
double book[10];
int i;
int maxid;
printf(“请输入10本图书的价格:”);
for ( i=0; i<10; ++i)
scanf(“%lf”, &book[i]);

maxid = getMaxPrice ( book , 10 ); //调用函数来实现功能

printf(“最高书价:%.2lf\n” , book[maxid] );
return 0;
}

double getMaxPrice ( double a[ ], int n) //函数定义
{
int i;
int maxid =0;
for( i=1; i<n; ++i)
if ( a [i] > a [maxid] )
maxid = i;
return maxid;
}

(6)Writing a function to find the minimum subscript of element in an
array ,and return the subscript to the function who calls it.
答案:
程序代码如下:
#include <stdio.h>

int getMinid( int a[ ], int n); //函数声明

int main( )
{
int array[10];
int i;
int minid;
printf(“请输入10个整数:”);
for ( i=0; i<10; ++i)
scanf(“%d”, &array[i]);

minid = getMin( array , 10 ); //调用函数来实现功能

printf(“最小元素的下标:%d\n” , minid );
return 0;
}

int getMin( int a[ ], int n) //函数定义
{
int i;
int minid=0;
for( i=1; i<n; ++i)
if ( a [i] < a [minid] )
minid = i;
return minid; 
}
>

(7)从键盘输入若干整数(数据个数应小于20),其值在0至4的范围内,用-1作为输入结束的标志。编程统计输入的整数个数。
答案:
程序代码如下:
#include <stdio.h>
int getCount( int a[ ], int n ); //函数声明
int main( )
{
int array[20] ={0} ; //用来存储最多20个整数
int c;
c = getCount( array , 20 );
printf(“输入的有效数的个数为:%d\n”, c);
return 0;
}

int getCount( int a[ ], int n ) //函数定义
{
int tmp; //临时存储输入的数
int count=0; //输入的有效数的个数
printf(“请输入若干个0-4之间的整数(以一1结束输入):”);
scanf(“%d” , &tmp);
while ( tmp != -1 && count <20 )
{
if ( tmp >=0 && tmp <=4 ) //在范围之内
a[ count++] = tmp ; //将值转存到数组对应元素中
scanf(“%d”, &tmp);//输入下一个数
}
return count;
}

(8)编写函数,将一个整型数组的全部元素逆序存储,即若原来数组元素分别为1,2,3,4,5,逆序存储后数组各元素变为5,4,3,2,1。函数原型可声明为:“void
reverse( int a[ ] , int n );”,参数a为数组,n为数组中的元素个数。
答案:
程序代码如下:
#include <stdio.h>

void reverse( int a[ ], int n );

int main( )
{
int array[10]={0};
int i;
printf(“请输入10个整数:”);
for( i=0; i<10; i++)
scanf(“%d”, &array[i]);
reverse( array, 10); //调用函数逆序存储数组中的数据
printf(“逆序后的元素为:\n”);
for( i=0; i<10; i++)
printf(“%5d”, array[i]);
printf(“\n”);
return 0;
}

void reverse( int a[ ], int n )
{
int i;
int tmp;
for( i=0; i<n/2; ++i)
{
tmp = a[i]; a[i] = a[n-i-1]; a[n-i-1] = tmp;
}
}

(9)编写函数,将一个十进制数转换成一个二进制数(提示:将转换后的二进制数各位的值依次存储在一个一维数组中,要输出时,只要逆序输出这个数组各元素的值即可)。函数原型可声明为:“int
transformToBin( int dnum, int bin[ ] )
;”,参数dnum是要转换的十进制数,bin是存储转换后的二进制值的数组(逆序存储的),返回值是bin数组中元素的个数。
答案:
程序代码如下:
#include <stdio.h>

int transformToBin( int dnum, int bin[ ] ) ;

int main( )
{
int array[32]={0}; //保存转换后的二进制数
int num; //待转换的整数
int cc; //最后得到的二进制总共多少位
printf(“请输入一个整数:”);
scanf(“%d”, &num);
cc = transformToBin( num, array ); //调用转换函数
cc–; //往回退一个元素下标,使cc指向最后一个元素
for( ; cc>=0; cc– ) //输出转换后的二进制数
printf(“%d”, array[cc]);
printf(“\n”);
return 0;
}

int transformToBin( int dnum, int bin[ ] )
{
int count = 0;
while ( dnum ) //当dnum还未转换完毕 
{
bin[count++] = dnum % 2; //余数保留到数组对应元素中
dnum /= 2; //数本身除2
}
return count;
}

(2)假设圆柱的底面积半径为r(= 2.5),高为h(=
3.5),编写求体积(体积=底面积*高)的程序。
答案:
假设圆柱的底面积半径为r(= 2.5),高为h(=
3.5),编写求体积(体积=底面积*高)的程序。
程序代码如下:
#include <stdio.h>
#define PI 3.1415926
int main( )
{
double r = 2.5;
double h = 3.5;
double v=0;
v = (PI * r * r)*h;
printf(“v = %lf\n”, v);
return 0;
}

(11)编写函数,将字符串str中的小写字母全部转换成大写字符串。函数原型可声明为:“void
toUpperCase( char str[ ]) ; ”。
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void toUpperCase( char str[ ]);

int main( )
{
char str[100];
puts(“请输入字符串:”);
gets(str);
toUpperCase ( str );
puts(“转换后的字符串:”);
puts( str );
return 0;
}

void toUpperCase( char str[ ])
{
int i;
i = 0;
while ( str[i] != ‘\0’ )
{
if( str[i] >= ‘a’ && str[i] <= ‘z’ )
str[i] -= 32; //小写字母转换成大写
++i;
}
}

(12)编写函数,删除字符串str中的所有ch字符。函数原型可声明为“void
deleteAll( char str[ ] , char ch )
;”,参数str为待处理的字符串,ch为要删除的字符。
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void deleteAll( char str[ ] , char ch );

int main( )
{
char str[100] , ch ;
puts(“请输入字符串:”);
gets(str);
printf(“请输入待删除的字符:”);
ch = getchar( );
deleteAll ( str , ch );
puts(“删除之后的字符串:”);
puts( str );
return 0;
}

void deleteAll( char str[ ] , char ch )
{
int oldi; //指向原str的
int newi; //指向删除ch后的str
oldi = 0 ;
newi = 0;
while ( str[ oldi ] != ‘\0’ )
{
if( str[oldi] != ch ) //不是要删除的字符
{
str[newi] = str[oldi]; //将其复制到新的字符串中
++newi; //新字符串增长一个元素
}
++oldi; //如果是要删除的字符,则会默认被跳过
}
str[newi] = ‘\0’; //新字符串置结束标志
}

(13)编写函数,用字符ch2替换字符串str中的字符ch1(注意:要全部都替换掉)。函数原型可声明为“void
replaceAll( char str[ ], char ch1, char ch2 ) ;”。
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void replaceAll( char str[ ], char ch1, char ch2 );

int main( )
{
char str[100] , ch1 , ch2 ;
puts(“请输入字符串:”);
gets(str);
printf(“请输入要被替换的字符及用来替换的字符(中间不要用空格分隔):”);
ch1 = getchar( );
ch2 = getchar( );
replaceAll ( str , ch1, ch2 );
puts(“替换之后的字符串:”);
puts( str );
return 0;
}

void replaceAll( char str[ ], char ch1, char ch2 )
{
int i;
i = 0;
while ( str[i] != ‘\0’ )
{
if( str[i] == ch1 )
str[i] = ch2;
++i;
}
}

(14)编写程序,统计一个字符串中26个字母出现的次数(不区分大小写)。函数原型可声明为:“void
countAlpha (char str[ ], int count[]
);”,参数str为待处理的字符串,数组count长度为26,用于存放26个字母出现的次数。
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void countAlpha (char str[ ], int count[] );

int main( )
{
char str[100];
int count[26]={0};
int i;
puts(“请输入字符串:”);
gets(str);
countAlpha ( str , count );
puts(“统计结果:”);
for( i=0; i<26; ++i) //输出个数不为0的字母及其个数
if ( count[i] )
printf(“%c——%d\n”, i+’a’, count[i]);
return 0;
}

void countAlpha (char str[ ], int count[] )
{
int i;
i = 0;
while (str[i] != ‘\0’ )
{
if( str[i]>=’a’ && str[i] <= ‘z’)
++count[ str[i] – ‘a’ ];
else if( str[i]>=’A’ && str[i] <= ‘Z’)
++count[ str[i] – ‘A’ ];
++i;
}
}

(1)编写程序输出下列图案 : 
*
***
*****
*******
答案:
#include <stdio.h>
int main( )
{
printf(“ *\n”);
printf(“ * * *\n”);
printf(“ * * * * *\n”);
printf(“ * * * * * * *\n”);
return 0;
}

(4).编写程序,从键盘输入两个字符分别存放在变量x和y中,要求通过程序交换它们的值。
答案:
编写程序,从键盘输入两个字符分别存放在变量x和y中,要求通过程序交换它们的值。
【程序代码如下:】
#include <stdio.h>
int main( )
{
char x, y;
char tmp;
printf(“Input two characters:”);
scanf(“%c%c”, &x, &y);
printf(“Before swap: x=%c, y=%c\n”, x, y);
tmp = x;
x = y;
y = tmp;
printf(“After swap: x=%c, y=%c\n”, x, y);
return 0;
}

(5)Write a program to evaluate the polynomial shown here: for x =
2.55.
3×3-5×2+6.
答案:
程序代码如下:
#include <stdio.h>
#include <math.h>
int main( )
{
double a=3, b=-5,c=2;
double x = 2.55;
double root1, root2;
double delt;
delt = b*b – 4*a*c;
root1 = ( -b + sqrt( delt ) ) / (2 * a) ;
root2 = ( -b – sqrt( delt ) ) / (2 * a) ;
printf(“The two roots are:\n”);
printf(“root1 = %lf\n root2 = %lf\n”, root1, root2);
return 0;
}

(1)编写程序。功能:从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int num; //输入的整数
int iCount = 0; //大于0的整数的计数变量
int jCount = 0; //小于0的整数的计数变量
printf(“请输入多个整数:(以0结束输入)”);
scanf(“%d”, &num);
while ( num ) // while ( num != 0 )
{
if ( num > 0 ) ++iCount;
else if ( num < 0 ) ++jCount;
scanf(“%d”, &num);
}
printf(“大于0的个数:%d\n”, iCount);
printf(“小于0的个数:%d\n”, jCount);
return 0;
}

(2)编写程序。功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int n; //300以内的数
int count = 0; //满足条件的数的统计变量
int sum = 0; //求和变量
for( n = 1; n <= 300; ++n)
{
if ( n % 2 == 0 && (n % 7 ==0 || n % 17 == 0) )
//是偶数,且能被7或17整除
{
sum += n; //求和
printf(“%5d”, n);//输出n值
++count;
if( count % 5 == 0 ) //某行够5个数了,则换行
printf(“\n”);
}
}
printf(“\n”);
return 0;
}

(3)Write a function called prime that returns 1 if its argument is a
prime number and returns 0 otherwise.
答案:
程序代码如下:
#include <stdio.h> 
#include <math.h>
int prime( int n ); //函数声明

int main( )
{
int num;
int isPrime;
printf(“Please input an integer:”);
scanf(“%d”, &num);
isPrime = prime( num ); //函数调用
if ( 1 == isPrime )
printf(“ %d is a prime \n” , num);
else
printf(“ %d is not a prime\n” , num );
return 0;
}

int prime( int n ) //函数定义
{
int i;
for( i = 2; i <= sqrt( n ) ; ++i)
if ( n % i == 0 ) break;

if ( i > sqrt ( n ) )
return 1;
else
return 0;
}

(5)编写程序。功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int n; //500-1之间的整数
int sum = 0; //求和变量
int count = 0; //满足条件的数的个数
for ( n=500; n>0; –n)
{
if ( n % 13 == 0 || n % 17 == 0 )
{
sum += n;
++count;
if ( count >= 10 ) //有10个满足条件的整数,提前结束循环
break;
}
}
printf(“sum = %d\n”, sum );
return 0;
}

(4)编写程序。功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int n;//整数
int eSum = 0; //奇数的和
int oSum = 0; //偶数的和
int eCount = 0; //奇数的个数
int oCount = 0; //偶数的个数
printf(“请输入若干个整数(以0结束输入):”);
scanf(“%d”, &n);
while ( n ) //当n不为0 
{
if ( n % 2 ) //n为奇数
{ eSum += n; ++eCount; }
else //否则, n为偶数
{ oSum += n; ++oCount; }
scanf(“%d”, &n); //输入下一个整数
}
printf(“奇数平均值:%f\n”, 1.0 * eSum / eCount );
printf(“偶数平均值:%f\n”, 1.0 * oSum / oCount );
return 0;
}

(6)编写程序。功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中马驮2担,两匹小马驮一担,求大、中、小马各多少匹?
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int bigHorse, midHorse, littleHorse; //大、中、小马的数量
for ( bigHorse = 0; bigHorse <= 33; ++bigHorse )
for( midHorse = 0; midHorse <= 50; ++midHorse )
{
littleHorse = 100 – bigHorse – midHorse; //小马数量
if ( littleHorse % 2 == 0 && (3*bigHorse + 2*midHorse + littleHorse /
2 == 100 ) ) //小马数量是偶数,且三种马驮的货是100担
printf(“大马:%d, 中马:%d, 小马:%d\n”, bigHorse, midHorse,
littleHorse );
}
return 0;
}

(7)编写程序。功能:百鸡问题:100元买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int cock, hen, chick; //公鸡、母鸡、小鸡的数量
for (cock = 0; cock <= 20; ++ cock)
for(hen = 0; hen <= 33; ++ hen)
{
chick = 100 –cock–hen; //小鸡数量
if (chick % 3 == 0 && (5* cock + 3* hen + chick / 3 == 100 ) )
//小鸡数量是3的倍数,且三种鸡的总钱数是100
printf(“公鸡:%d, 母鸡:%d, 小鸡:%d\n”, cock, hen, chick);
}
return 0;
}

(8)编写程序。功能:在屏幕上用*输出一个漏斗状的图形。
答案:
程序代码如下:
#include <stdio.h>

void printFunnel( int n); //函数声明

int main( )
{
int n; //上半部的总行数
printf(“请输入漏斗上半部的总行数:”);
scanf(“%d”, &n);
printFunnel( n ); //调用函数打印漏斗形
return 0;
}

void printFunnel( int n)
{
int row; //行号
int starCount; // 某行上星号的数量
int spaceCount; //某行上空格的数量
for( row = 1; row <= n; ++row)
{
for( spaceCount = 1; spaceCount <= row – 1 ; ++ spaceCount)
printf(“ “); //打印出某行上星号前的空格

for( starCount = 1; starCount <= 2*( n – row ) + 1; ++starCount )
printf(“* “); //打印出某行上的所有星号

printf(“\n”); //换行
}

//打印下半部分(可看成一个n-2行的三角形状)
for( row = 2; row <= n; ++row)
{
for( spaceCount = 1; spaceCount <= n – row ; ++ spaceCount)
printf(“ “); //打印出某行上星号前的空格

for( starCount = 1; starCount <= 2* row – 1; ++starCount )
printf(“* “); //打印出某行上的所有星号

printf(“\n”); //换行
}
}

9)编写程序。功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个数一行。
答案:
程序代码如下:
#include <stdio.h> 
int main( )
{
int n;//100到1000之间的整数
int tmpn;//临时存储n
int sum; //统计n的各位数字之和
int count = 0; //输出数的个数
for ( n = 100; n <= 1000; ++n )
{
tmpn = n; //将n临时存储到tmpn中
sum = 0; //每个n要重新计算各位数字之和
while ( tmpn ) //当tmpn不为0时
{
sum += tmpn % 10;
tmpn /= 10;
}
if ( sum % 15 == 0 ) //如果n满足指定的条件
{
printf(“%5d”, n); //输出当前n值
++count;
if ( count % 10 == 0 ) //一行输出了10个整数,则换行
printf(“\n”);
}
}
printf(“\n”);
return 0;
}

(1)编写程序,从键盘输入两个数字字符并分别存放在字符型变量x和y中,要求通过程序将这两个字符对应的数字相加后输出。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
char x , y;
printf(“Input two characters:”);
scanf(“%c%c”, &x, &y);
if( x>=’0’&&x<=’9’ && y>=’0’&&y<=’9’ )
printf(“%d \n”, x-‘0’+y-‘0’);
return 0;
}

1)某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元/公里,3公里以外2.1元/公里;富康8元/公里,3公里以外2.4元/公里;桑塔纳9元,3公里以外2.7元/公里。编程:从键盘输入乘车的车型及公里数,输出应付的车资。
答案:
程序代码如下:
#include <stdio.h>

int main( )
{
int carType;//车型。1代表夏利;2代表富康;3代表桑塔纳
double xiali = 2.1; //每公里价格
double fukang = 2.4;
double sangtana = 2.7;
double distance; //距离
double totalMoney;//总的收费

printf(“请输入您乘坐的车型:1代表夏利;2代表富康;3代表桑塔纳:”);
scanf(“%d”, &carType);
printf(“请输入您乘车的总路程:”);
scanf(“%lf”, &distance);

if( carType == 1)//夏利
{
if( distance < 3 )
totalMoney = 7.0;
else
totalMoney = 7 + xiali * (distance – 3);
}
else if( carType == 2 ) //富康
{
if( distance < 3 )
totalMoney = 8.0;
else
totalMoney = 8 + fukang * (distance – 3);
}
else if( carType == 3 ) //富康
{
if( distance < 3 )
totalMoney = 9.0;
else
totalMoney = 9 + sangtana * (distance – 3);
}

printf(“(四舍五入)您的车费为:%.0lf\n”, totalMoney );

return 0;
}

编写程序,从键盘上输入一个小写字母,将其转化为大写字母。
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
char lower;
printf( “Input a lower alpha:”);
scanf(“%c”, &lower);
if( lower>=’a’ && lower<=’z’ )
printf(“%c \n”, lower – 32);
return 0;
}

(3)编写函数,将数组s1中的全部奇数都复制到数组s2中。函数原型可声明为:“int
copyTo( int * s1 , int n, int * s2 ) ;
”,参数s1和s2为指向两个数组的指针,n为数组s1中元素的个数,返回值为复制完成后s2中元素的个数。
答案:
程序代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int copyTo( int *s1, int n , int *s2 );

int main( )
{
int s1[100], s2[100];
int count; //最终奇数的个数
int i;
srand( time ( NULL ) ); //随机种子
for ( i = 0; i < 100; ++i ) //避免每次执行程序重复输入
s1[i] = rand( ) % 1001 ; //随机生成0-1000之间的整数

for ( i = 0; i < 100; ++i ) //打印出数组s1元素
printf(“%5d”, s1[i] ) ;
printf(“\n”);

count = copyTo( s1, 100, s2 );

printf(“奇数如下:\n”);
for ( i = 0; i < count; ++i ) //打印出数组s2元素
printf(“%5d”, s2[i] ) ;
printf(“\n”);
return 0;
}

int copyTo( int *s1, int n , int *s2 )
{
int *ps1, *ps2;
ps1 = s1; ps2 = s2;
while ( ps1 < s1 + n )
{
if( *ps1 % 2) //是奇数
*ps2++ = *ps1;
ps1++;
}
return ps2 – s2;
}

6)编写函数,将字符串中的大写字母转换为小写字母。函数原型可声明为“void
strToLow( char * str ) ;”,参数str是要转换的字符串。
答案:
程序代码如下:
#include <stdio.h>
#include <string.h>

void toLowerCase( char *str);

int main( )
{
char str[100];
puts(“请输入字符串:”);
gets(str);
toLowerCase ( str );
puts(“转换后的字符串:”);
puts( str );
return 0;
}

void toLowerCase ( char *str )
{
while ( *str )
{
if(*str >= ‘A’ && *str <= ‘Z’ )
*str += 32; //小写字母转换成大写
++str;
}
}

(2)Write a program that asks the user to type in two integer values at
the terminal. Test these two number to determine if the first is evenly
divisible by the second, and then display an appropriate message at the
terminal.
答案:
程序代码如下:
#include <stdio.h>
int main( )
{
int num1, num2;
printf(“Input two integers:”);
scanf(“%d%d”, &num1, &num2);
if ( 0 == num1 % num2 )
printf(“ %d can be evenly divisible by %d\n”, num1, num2);
else
printf(“ %d can not be evenly divisible by %d\n”, num1, num2);
return 0;
}

 

/*编写函数,实现从键盘上输入一个小写字母,将其转化为大写字母。*/ /*
#includestdio.h int zhuanhua(char s…

描述:

  }printf(“%d\n%d\n%d\n%d\n%d\n”,upper,lower,num,blank,orther);
  return 0;
}

描述:

#include <stdio.h>

是用指针编程:输入一行文字,统计其中大写字母、小写字母、空格以及数字字符的个数。

字符统计 again 时限:1000ms 内存限制:10000K  总时限:3000ms

输入一行字符(字符个数小于255),统计其中不同的大写和小写字母的个数。每个数字占一行。

void swap(int *pa,int *pb) {

输入:

描述:

输入:

int temp;

一行字符。

一篇文章共3行,每行有80个字符,要求统计其中的英文大写字母,英文小写字母,数字,空格和其他字符的个数.

一行测试数据

temp = *pa;

输出:

输入:

输出:

*pa = *pb;

大写字母、小写字母、空格以及数字字符的个数,每个数字占一行。

三行文字,每行80个字符.

不同的大写和小写字母的个数,每个数字占一行。

*pb = temp;

输入样例:

输出:

输入样例:

}

GGatT 123

5个整数,分别代表英文大写字母,英文小写字母,数字,空格和其他字符的个数.每个整数占一行.

Da; cDb。。.” D

void main() {

输出样例:

输入样例:

输出样例:

int a,b,c,temp;

3
2
1
3

11111111111111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
……………………………………………………………………..

1
3

scanf(“%d%d%d”,&a,&b,&c);

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    char a[100];
    char *p;
    int upper,lower,blank,num;
    upper=lower=blank=num=0;
    p=a;
    gets(a);
    while(*p!=’\0′)
    {
        if(isupper(*p))
        upper++;
        else if(islower(*p))
        lower++;
        else if(*p==’
‘)
        blank++;
        else if(isdigit(*p))
        num++;
        p++;
    }
    printf(“%d\n%d\n%d\n%d\n”,upper,lower,blank,num);
    return 0;
}

输出样例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>//isupper和islower函数的头文件
int main()
{
    char a[100];int b[100]={0};int
c[100]={0};
    int i=0,k=0;
    int little=0;int
big=0;
    gets(a);
    while(a[i]!=’\0′)
    {
        if(isupper(a[i]))//其实这里不用判断,让两个if语句在同一个while语句中会少用一半的时间
         {
            while(k<26)
            {
               if(a[i]==’A’+k&&b[k]==0)
                {
                  big++;
                  b[k]=1;
                }

if swap(&a,&b);

0
80
80
0
80

               k++;
            }
        }
        k=0;
        if(islower(a[i]))
        {
            while(k<26)
            {
                if(a[i]==’a’+k&&c[k]==0)
                {
                  little++;
                  c[k]=1;
                }

if swap(&b,&c);

               k++;
            }
        }
        i++;
    }
    printf(“%d\n%d\n”,big,little);
    return 0;
}

if swap(&a,&c);

printf(“%d,%d,%d”,a,b,c);

}

二、
编写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后在主函数中输出。

#include<stdio.h>

int main()

{void copy(char c[],char b[]);

char a[100],b[20];

gets;

copy;

puts;

return 0;

}

void copy(char c[],char b[])

{int i,j=0;

for(i=0;c[i]!=’\0′;i++)

if(c[i]==’a’||c[i]==’A’||c[i]==’e’||c[i]==’E’||c[i]==’i’||c[i]==’I’||c[i]==’O’||c[i]==’o’||c[i]==’u’||c[i]==’U’)

{b[j]=c[i];j++;}

b[j]=’\0′;

return;

}

三、写一函数,对输入的一组整数按由小到大的顺序排序,在main主函数调用该函数实现排序

#include<stdio.h>

void main()

{void paixu(int a[],int n);

int a[100],i,n;

printf(“需要对多少数进行排序:”);

scanf(“%d”,&n);

printf(“请输入要排序的一组数;

for(i=0;i<n;i++)

scanf(“%d”,&a[i]);

paixu;

for(i=0;i<n;i++)

printf(“%2d”,a[i]);

printf;

return;

}

void paixu(int a[],int n)

{int i,j,t;

for(j=0;j<n;j++)

for(i=0;i<n-1-j;i++)

if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

}

四、 编写一个函数,统计字符数组中大写字母的个数。

#include <stdio.h>

int main()

{char string[100],Le;

int count;

printf(“input string:\n”);

_gets__; //输入字符串

Le=count; //调用count函数

printf(“大写字母有%d个”,Le);

return 0;

}

int count( char s[ ] )

{int sum=0,i;

for (i=0;s[i]!=’\0′;i++)

if (s[i]>=’A’ && s[i]<=’Z’)

相关文章

留下评论

网站地图xml地图