第九题
题目
请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成
(字符串长度大于等于2)。
例如:字符串: uvwxyz满足要求;
而字符串: uvxwyz不满足要求。
#include <stdio.h>
#include <string.h>
void NONO();
int fun( char *t )
{
}
main()
{ char s[26];
printf("请输入一个字母组成的字符串 : "); gets(s);
if( fun(s) ) printf("%s 是由连续字母组成的字符串.\n", s );
else printf("%s 不是由连续字母组成的字符串!\n", s );
NONO();
getchar();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i;
char s[26], *p;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fgets(s, 26, fp);
p=strchr(s,'\n');
if(p) *p=0;
if (fun(s)) fprintf(wf, "%s\n", s+2);
else fprintf(wf, "%s\n", strrev(s));
}
fclose(fp) ;
fclose(wf) ;
}
解析
int fun( char *t )
{
while(*t!='\0'){
if(*(t+1)-*t!=1)
return 0;
t++;
}
return 1;
}
分析
第十题
题目
函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依次类推。最后t所指的数组中的内容应是:"BDF24"。
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];void NONO ();
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s\n", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
解析
void fun(char *s, char t[])
{
while(*s!='\0'){
if(*s%2!=1){
*t=*s;
t++;
}
s++;
}
*t='\0';
}
分析
第十一题
题目
解析
float fun(int m, int n)
{
float i=1.0,k=1.0,j=1.0,d;
float P;
d=m-n;
while(m!=0){
i*=m;
m--;
}
while(n!=0){
j*=n;
n--;
}
while(d!=0){
k*=d;
d--;
}
P=i/(j*k);
return P;
}
分析
当然也可以用‘for’循环
第十二题
题目
结构体struct mpow两个成员的意义是: a为幂的底,t为幂的指数。
请编写函数fun,其功能是:计算出x所指数组中n个幂数之和并返回。
例如,当结构体数组用如此数据12, 0,9, 2, 23, 1, 7, 2初始化时,
程序的输出结果应该是:sum= 154.000000
#include <stdio.h>
#pragma warning (disable:4996)
#define N 5
struct mpow
{
double a;
int t;
};
double fun(struct mpow *x,int n)
{
}
void main()
{
void NONO();
struct mpow x[N]={ 12,0,9,2,23,1,7,2 };
double sum;
sum=fun(x,4);
printf("sum=%lf\n",sum);
NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *in, *out ;
struct mpow x[N];
int i,j ;
double sum;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j=0 ; j < 4; j++) fscanf(in, "%lf,%d,", &x[j].a,&x[j].t) ;
sum=fun(x,4);
fprintf(out, "sum=%lf\n",sum);
}
fclose(in) ;
fclose(out) ;
}
解析
double fun(struct mpow *x,int n)
{
int i;
double sum=0.0,k;
for(i=0;i<n;i++){
k=1.0;
while(x[i].t!=0){
k*=x[i].a;
x[i].t--;
}
sum+=k;
}
return sum;
}
分析
第十三题
题目
#include <stdio.h>
double fun( int n )
{
}
main() /* 主函数 */
{ void NONO ();
printf("%f\n", fun(10));
NONO();
getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, n ;
double s ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%f\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
解析
double fun( int n )
{
int i;
double sum=0.0,t;
for(i=1;i<=n;i++){
t=i*(i+1);
sum+=1/t;
}
return sum;
}
分析
第十四题
题目
请编写一个函数fun,它的功能是:求出一个2XM整型二维数组中最大元素的值,并将此值返回调用函数。
#include <stdio.h>
#define M 4
int fun (int a[][M])
{
}
main( )
{ int arr[2][M]={5,8,3,45,76,-4,12,82} ;void NONO ();
printf("max =%d\n", fun(arr)) ;
NONO( ) ;
getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *wf ;
int arr[][M]={5,8,3,90,76,-4,12,82} ;
wf = fopen("out.dat","w") ;
fprintf(wf, "max=%d\n", fun(arr)) ;
fclose(wf) ;
}
解析
int fun (int a[][M])
{
int i,j,max=0;
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(a[i][j]>max)
max=a[i][j];
return max;
}
分析
第十五题
题目
请编写函数fun,其功能是:求n (n<10000) 以内的所有四叶玫瑰数并逐个存放到result所
指的数组中,四叶玫瑰数的个数作为函数值返回。
如果一个4位正整数等于其各个数字的4次方之和,则称该数为四叶玫瑰数。
例如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4,
因此1634就是一个四叶玫瑰数。
#include<stdio.h>
#pragma warning (disable:4996)
int fun(int n, int result[])
{
}
main( )
{
int result[10], n, i;
void NONO(int result[], int n);
n = fun(9999, result);
for(i=0; i<n; i++) printf("%d\n", result[i]);
NONO(result, n);
}
void NONO(int result[], int n)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp ;
int i;
fp = fopen("out.dat","w") ;
fprintf(fp, "%d\n", n);
for(i=0; i<n; i++) fprintf(fp, "%d\n", result[i]);
fclose(fp);
}
解析
int fun(int n, int result[])
{
int i,j=0,t,temp,sum;
while(n>=1000 && n<=9999){
temp=n;
sum=0;
for(i=0;i<4;i++){
t=temp%10;
sum+=t*t*t*t;
temp=temp/10;
}
if(sum==n)
result[j++]=n;
n--;
}
return j;
}
int fun(int n, int result[])
{
int i, j = 0, t, temp, sum;
for(int current = 1000; current <= n; current++) { // 从1000开始到n
temp = current;
sum = 0;
for(i = 0; i < 4; i++) {
t = temp % 10;
sum += t * t * t * t;
temp /= 10;
}
if(sum == current)
result[j++] = current;
}
return j;
}
分析
第一个是错的第二个是对的为啥,看不出来
第十六题
题目
请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后字符串中的内容应该是:DEFGHIJKABC。
#include <stdio.h>
#include <string.h>
#define N 80
void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */
{
int i; char t;
t=w[0];
for(i=0;i<(int)strlen(w)-1;i++)
w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w, int m) /* 可调用fun1函数左移字符 */
{
}
main()
{ char a[N]= "ABCDEFGHIJK";
int m;void NONO ();
printf("The original string:\n");puts(a);
printf("\n\nEnter m: ");scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");puts(a);
printf("\n\n");
NONO();
getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; char a[N] ; int m, i ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%d %s", &m, a) ;
fun(a, m) ;
fprintf(wf, "%s\n", a) ;
}
fclose(rf) ; fclose(wf) ;
}
解析
void fun(char *w, int m) /* 可调用fun1函数左移字符 */
{
int i;
for(i=0;i<m;i++)
fun1(w);
}
分析
标签:wf,int,18,void,NONO,fun,程序设计,sum From: https://blog.csdn.net/2401_82772407/article/details/142208393