美高梅官方网站3045-mgm6608美高梅app下载
百马百担问题的探求及疑忌

百马百担问题的探求及疑忌

作者:美高梅官方网站    来源:未知    发布时间:2020-01-19 21:59    浏览量:

图片 1

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

/*编写函数,实现从键盘上输入一个小写字母,将其转化为大写字母。*/ 
/* 
#include<stdio.h> 
int zhuanhua(char s); 
void main(){ 
    char s; 
    printf("请输入一个字符:"); 
    scanf("%c",&s); 
    printf("转化前为:%cn",s); 
    s=zhuanhua(s); 
    printf("转化后为:%cn",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("和是%dn",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]!='') 
            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: %lfn”, absoluteValue( x ) );

printf(“请输入x:”); //第二次调用函数
scanf(“%lf”, &x);
printf(“Absolute Value of x is: %lfn”, 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(“最高书价:%.2lfn” , 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(“最小元素的下标:%dn” , 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(“输入的有效数的个数为:%dn”, 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 = %lfn”, 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] != ‘’ )
{
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 ] != ‘’ )
{
if( str[oldi] != ch ) //不是要删除的字符
{
str[newi] = str[oldi]; //将其复制到新的字符串中
++newi; //新字符串增长一个元素
}
++oldi; //如果是要删除的字符,则会默认被跳过
}
str[newi] = ''; //新字符串置结束标志
}

(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] != ‘’ )
{
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------%dn”, i+’a’, count[i]);
return 0;
}

void countAlpha (char str[ ], int count[] )
{
int i;
i = 0;
while (str[i] != ‘’ )
{
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=%cn”, x, y);
tmp = x;
x = y;
y = tmp;
printf(“After swap: x=%c, y=%cn”, x, y);
return 0;
}

(5)Write a program to evaluate the polynomial shown here: for x = 2.55.
3x3-5x2+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 = %lfn root2 = %lfn”, 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的个数:%dn”, iCount);
printf(“小于0的个数:%dn”, 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 primen” , 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 = %dn”, 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(“奇数平均值:%fn”, 1.0 * eSum / eCount );
printf(“偶数平均值:%fn”, 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, 小马:%dn”, 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, 小鸡:%dn”, 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("(四舍五入)您的车费为:%.0lfn", 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 %dn”, num1, num2);
else
printf(“ %d can not be evenly divisible by %dn”, num1, num2);
return 0;
}

 

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

图片 2

一、问题概述有一百匹马,一百担货,大马驮三担,中马驮二担,两匹小马驮一担,问大中小马各多少匹?二、解法解法一:用常规的方法for(big=0;big=34;big++)for(mid=0;mid=50;mid++)for(small=0;small100;small++)if((big*3+mid*2+small/2==100)(big+mid+small==100))System.out.println(big+""+mid+""+small);运行结果为:14种13267230684276952570722718207210177311157413127514107616777175781927920080解法二:用数学知识对其进行进一步的优化3*big+2*mid+/2=100化简可以得到5*big+3*mid=100其图像是:那么程序就是:for(x=0;x=20;x++){for(y=0;y=34;y++)if((5*x+3*y)==100)System.out.printf("%d,%d,%dn",x,y,100-x-y);}输出结果:2,30,685,25,708,20,7211,15,7414,10,7617,5,7820,0,80三、疑惑很明显解法二比解法一的结果少,一共少了7种:就是小马为奇数个的情况。但是仔细分析一下,小马为奇数不是不可以,只要让一个小马不驮货物,实际情况也是允许的。所以第一种情况没错。第二种方法也是没问题的啊,那么问题来了,就一个问题,不同的方法按理说因该有相同的答案的,但这里却出现了两种方法两种答案而且我百度到的也是各不相同,有14中的,有7中的。所以,我就有点混乱了。我感觉现在我就是那个最厉害矛,最厉害的盾,完全矛盾,死循环了。欢迎大神指点迷津

百马百担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问共有多少种驮法?且各种驮法中大、中、小马各多少匹?零基础小白到大神之路,欢迎加群 487875004,群里有免费C++课程,还有大量干货哦

【分析】

1、定义整型变量m、n、k分别存放大马匹数、中马匹数、小马匹数;

2、定义整型变量sum存放共有几种驮法,且sum赋初值为0;

3、根据题意,大马、中马、小马共100匹;大马、中马、小马驮100担货满足如下关系:

m+n+k=100(匹)

3*m+2*n+1/2*k=100(担)

4、三个未知数,两个方程,此题有若干组解;

5、计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否是问题真正的解。此题可以采用两重循环,列举出该问题所有可能的解进行筛选。

【源程序】

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有