/*編寫函數,實現從鍵盤上輸入一個小寫字母,將其轉化為大寫字母。*/
/*
#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.
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 = %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;
}