首页 > 其他分享 >C语言函数题

C语言函数题

时间:2023-12-23 19:45:39浏览次数:29  
标签:函数 int sum C语言 char str printf

函数篇

  1. 编写一个函数,可以实现给出算数运算的功能,给出两个值以及算数运算符号可以算出相应的结果

     #include<stdio.h>
    
     int math(int a,int b,char c);//开头声明一个自己定义的函数 
     int main()
     {
     int a,b,c,sum;
     printf("请输入计算公式:");
     scanf("%d%c%d",&a,&c,&b);
     sum=math(a,b,c);//插入定义的函数 
     printf("sum=%d\n",sum);
     return 0;}
    
     int math(int a,int b,char c)//在括号里定义a,b,c的类型 
    
     {
     int sum;//形参?扮演这个函数的主角,和主函数的sum无关 
     switch(c)//switch语句括号里面是字符变量,下面的case就是字符变量的几种情况 
     {
     	case '+':sum=a+b;break;//break是满足这个case后就直接执行此语句并跳出循环 
     	case '-':sum=a-b;break;
     	case '*':sum=a*b;break;
     	case '/':sum=a/b;break;
     	case '%':sum=a%b;break;
     	default:break;
     }
     return sum;//定义了什么形参就返回什么形参? }
    
  2. 编写一个函数,判断是不是素数,是的话返回1,不是就返回0

     #include<stdio.h>
    
     #include<math.h>//下面要调用数学函数 
    
     int isprime(int n);//开头就声明一个自己定义的函数,括号里可以只写n 
    
     int main()
     {
     int n;//一定要在这个主函数里定义这个变量,n在这里是局部变量,要用的,不能删掉这行 
     printf("请输入一个整数:");
     scanf("%d",&n);
     printf("%d\n",isprime(n)); 输出isprime函数的返回值n,
     return 0;
      }
     int isprime(int n) //函数的实现部分 
     {
     	int i; //循环变量 
     	for(i=2;i<=sqrt(n);i++)//sqrt是开方函数, i<=sqrt(n)是为了提高效率,减少不必要的循环次数。
     	{ 
     		if(n%i==0)//是素数的条件 
     		{
     		return 0;//返回值是0 
     		} 
     	} 
     	return 1;//循环结束后,没有找到能整除n的数,说明n是素数,返回1表示是素数
     }
     //循环从2开始遍历到i的平方小于等于n为止(即i的平方大于等于n时终止循环)
     //这是因为如果存在一个大于sqrt(n)的整数k,使得n能被k整除,那么必然存在比k小且整除n的因子,即k的倒数小于sqrt(n)。
     //因此,在循环中只需要遍历到i的平方小于等于n即可,不需要继续遍历到n,可以提高代码的效率。
    
  3. 编写一个函数实现求数组的总和

     #include<stdio.h> 
     int add(int a[],int n);//声明一个自己定义的函数,a是数组,n是元素个数 
     int main()
     {
     	int a[10]={1,2,3,4,5,6,7,8,9,10};//给数组里的每个值都给赋值 
     	int sum;
     	sum=add(a,10);//调用定义的函数 ,括号里的两个变量都赋予了具体的值,表示数组a有十个元素;返回的''sum''就在add函数的箱子里,然后把这个箱子里的值赋给这里的局部变量sum 
     	printf("sum=%d",sum);
     	return 0;
     }
    
     int add(int a[],int n)//自己定义的函数的实现部分 ,这里的a和n都要定义了才能使用 
     {
     	int i,sum=0;
     	for(i=0;i<10;i++)//这里i<10是有意义的,a[10]中的10是长度,包含a[0]~a[9]十个数组,所以a[i]中的i只需小于10即可,即直到等于9的时候循环结束 
     	{
     		sum+=a[i];//等价于sum=sum+a[i];累加 
     	}
     	return sum;//返回sum的值给这个函数的“箱子”里 
     }
    
  4. 编写一个函数,实现冒泡排序的功能
    #include<stdio.h>

     int bubble(int a[],int n);//可以改为void bubble...同时下面也要改为void因为他不返回任何值,就是一个函数执行表达式 
     int main() 
     {
         int a[6]={20,40,10,5,50,30};
         int i = 0;
         bubble(a,10);//调用冒泡排序 
         for(i=0;i<6;i++)
     	{ 
             printf("%d ",a[i]);
         }
         return 0;
     }
     
     int bubble(int a[],int n)//冒泡函数的实现部分 
     {
     	int j,i,temp;//两个循环变量和一个中间变量 
     	for(j=0;j<6;j++) 
     	{ // 外部总共要遍历 n-1 次(n 为元素个数)
             int k = 0; // --有序判断控制器
             for(i=0;i<6-j-1;i++) 
     		{ // 每一次将最大值放在最后以后,前面的数两两比较次数减1,只需要和最大值前面的元素比较
                 if(a[i] > a[i+1]) 
     			{ // 比较相邻两者大小关系,如果前面元素大则需要改变位置
                     temp = a[i]; // 通过中间变量交换两者位置
                     a[i] = a[i+1];
                     a[i+1] = temp;
                     k = 1;
                 }
             }
             if(k == 0) 
     		{ // 当等于0则没有交换
                 break;
             }
         }
     }
    
  5. 编写一个函数,实现输入一个字符串,可以求出字符串当中的大写、小写、数字、空格以及其他的字符的个数

     	#include<stdio.h>
     	#include<math.h>
    
     	void count(char str[],int a[]);
     	int main()
     	{
     		char str[50];
     		int a[5]={0};
     		printf("请你输入一个字符串:");
     	gets(str);
     	count(str,a);//调用‘数数’函数 
     	printf("大写:%d\n",a[0]);
     	printf("小写:%d\n",a[1]);
     	printf("数字:%d\n",a[2]);
     	printf("空格:%d\n",a[3]);
     	printf("其他:%d\n",a[4]);
     		return 0;
     	}
     	 
     	void count(char str[],int a[])//无需返回函数的实现部分 
     	{
     		int i=0;
     		while(str[i]!='\0')//当还没有碰到字符串结尾的时候,维持循环 
     		{
     			if(str[i]>='A'&&str[i]<='Z')//大写字母部分 
     			{
     				a[0]++;
     			}
     			else if(str[i]>='a'&&str[i]<='z')//小写字母部分 
     			{
     				a[1]++;
     			}
     			else if(str[i]>='0'&&str[i]<='9')//数字部分 
     			{
     				a[2]++;
     			}
     			else if(str[i]==' ')//空格部分 
     			{
     				a[3]++;
     			}
     			else//其他 
     			{
     				a[4]++;
     			}
     			i++;//下标加一,为的是检测到下一个字符 
     		}
     	}
    
  6. 编写一个函数(int strlrn(char str[])),实现字符串长度的求取

     #include<stdio.h>
    
     int strlen(char str[]);//声明一个函数 
     int main()
     {
     	char str[50];
     	printf("请输入一个字符串:");
     	gets(str);
     	printf("%d\n",strlen(str));
     	return 0;
     }
     int strlen(char str[]) 
     {
     	int i=0; 
     	while(str[i]!='\0')//在字符串输入完成后才结束循环 
     	{
     		i++; //下标自增 
     	}
     	return i;//把函数求得的字符串长度的值返回 
     }
    
  7. 编写一个函数void strlwr(char str[]),实现字符串小写变大写的功能

     	#include<stdio.h>
     	void strlwr(char str[]);//声明一个大写变小写的函数 
     	int main()
     	{
     		char str[50];//定义一个存放字符串的长度为50的数组 
     		printf("请输入一个字符串:");
     		gets(str);//输入--scanf("%s", str[50])和gets(str)并不等价。用前者会输不出来 
     		//scanf("%s", str[50])是使用scanf函数来读取字符串,%s表示读取字符串,str[50]表示将字符串存储到str的第50个字符位置开始的内存空间中。
     		//而gets(str)是使用gets函数来读取字符串,str表示要存储字符串的数组。
     	
     		strlwr(str);//调用 
     		printf("%s\n",str);
     		return 0;
     	}
     	void strlwr(char str[]) //实现部分 
     	{
     		int i=0; 
     		for(i=0;str[i]!='\0';i++)//for,if语句都只有一个执行语句就可以都省略{} 
     			if(str[i]>='A'&& str[i]<='Z')//没有else,默认不符合条件就不会执行,按原样输出 
     				str[i]=str[i]+32; //大写转换小写	 
     	}
    
  8. 编写一个函数void strcpy(char to[],char from[]),实现字符串复制功能

     #include<stdio.h>
     void strcpy(char to[],char from[]); //字符串复制函数 
     int main()
     {
     	char str[50],a[50];//定义了两个字符数组,长度都为50,超过长度了就不会输出任何东西,接下来就是使用字符串处理函数对这些数组进行操作,比如拷贝、连接、比较等等。 
     	printf("请输入一个字符串:");
     	gets(a);//输入 
     	strcpy(str,a);//调用复制函数 
     	printf("%s\n",str);
     	return 0;
     }
     void strcpy(char to[],char from[]) //无返回值的函数的实现,定义了两个字符串数组,且表意清晰 
     {
     	int i;//这里int一定要有
     	for(i=0;from[i]!='\0';i++)
     	{
     		to[i]=from[i];	 
     	}
     	to[i]='\0';//代表字符结束 
     } 
    
  9. 编写一个函数int strcmp(char str1[],char str2[]),实现字符串比较功能

     #include<stdio.h> 
     int strcmp(char str1[],char str2[]);//字符串比较函数
     int main()
     {
     	char str[50],a[50];
     	printf("请输入字符串a:");
     	gets(a);
     	printf("请输入字符串str:");
     	gets(str);
     	printf("%d\n",strcmp(str,a));//这个格式就要用到有返回值的函数了 
     	return 0;
     }
     int strcmp(char str1[],char str2[]) 
     {
     	int i=0;
     	while(str1[i]!='\0' || str2[i]!='\0')//只要有一个还没有结束 
     	{
     		if(str1[i]>str2[i])
     		{
     			return 1; //只要比出结果就结束函数 
     		}
     		if(str1[i]<str2[i])
     		{
     			return -1;
     		}
     		i++; //没有比出结果继续比下一位 
     	}
     	return 0; //走到这代表相等 
     } 
    

10.编写一个函数可以求出任意整数的质数,并输出因子的乘积表示格式:12=223

	#include<stdio.h> 
	void number(int n);
	int main()
	{
		int n;
		printf("请输入一个整数:");
		scanf("%d",&n);
		number(n); 
		return 0;
	}
	void number(int n)
	{
		int temp=n;
		int i,j=0,a[20]={0};//数组用来存储质因数 
		for(i=2;i<=n;i++)//判断是否为n的质因数 
		{
			if(n%i==0)
			{
				a[j++]=i;//j用来记录质因数个数
				n=n/i;  //去除已找到的质因数 
				i=1;    //重新从1开始判断是否还有其他质因数 
			}
		}
		printf("%d=%d",temp,a[0]); 
		for(i=1;i<j;i++)//重新遍历数组a 
		{
			printf("*%d",a[i]);
		}
		printf("\n");
	}
  1. 编写一个函数可以求出整数的位数

    #include<stdio.h>
    int bitNumber(int n);
    int main()
    {
    	int n;
    	printf("请输入一个整数:");
    	scanf("%d",&n);
    	printf("位数:%d\n",bitNumber(n));//输出函数的回归值 
    	return 0;
    }
    int bitNumber(int n)
    {
    	int i=0;
    	if(n<0)
    	{
    		n=-n; //让负变正 
    	} 
    	while(n>0)
    	{
    		n/=10;
    		i++;//用来计算n的位数 
    	}
    	return i;//返回目标值 
    }*
    

标签:函数,int,sum,C语言,char,str,printf
From: https://www.cnblogs.com/lulixiu1999/p/17923512.html

相关文章

  • 无涯教程-PL/SQL - EXIT函数
    PL/SQL编程语言中的EXIT语句具有以下两种用法-在循环内遇到EXIT语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。如果您使用的是嵌套循环,则EXIT语句将停止执行最里面的循环,并开始执行该块之后的下一行代码。EXIT-语法PL/SQL中EXIT语句的语法如下-EXIT;EXIT-......
  • 字符函数和字符串函数:strcpy、strcat——《初学C语言第36天》
    ////strcat(字符串追加)——>头文件:<string.h>//strcat的功能就是:1.先找到目标字符串的结尾(\0)然后进行2.strcpy拷贝//char*strcat(char*destination,constchar*source)//括号里为两个地址,返回类型char*//destination目的地 source源头,把源头的数据追加到目的地空间的末......
  • 无涯教程-PL/SQL - 嵌套循环函数
    PL/SQL允许在另一个循环中使用一个循环,以下部分显示了一些示例来说明这一概念。PL/SQL中嵌套的基本LOOP语句的语法如下-LOOPSequenceofstatements1LOOPSequenceofstatements2ENDLOOP;ENDLOOP;PL/SQL中嵌套的FORLOOP语句的语法如下-FORcount......
  • 无涯教程-PL/SQL - FOR函数
    FORLOOP是一种重复控制结构,可让您有效地编写需要执行特定次数的循环。FORLOOP-语法FORcounterINinitial_value..final_valueLOOPsequence_of_statements;ENDLOOP;FORLOOP-示例DECLAREanumber(2);BEGINFORain10..20LOOPdbm......
  • C++ --- 函数重载
    什么是函数重载函数重载: 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。函数重载是C++在C语言基础上进行的改进,解决了C语言同名函数无法服务不同类型......
  • 箭头函数
    箭头函数1.this是静态的,永远指向函数声明时所在作用域的this值,比如在全局作用域下,箭头函数的this就是window;2.箭头函数没有构造函数;3.箭头函数没有参数arguments;4.箭头函数的还可以进一步简写:​ 1).当且仅当只有一个参数时,可以省略小括号;​ 2).当且仅当函数体只有一......
  • 无涯教程-PL/SQL - WHILE函数
    只要给定条件为真,PL/SQL编程语言中的WHILELOOP语句就会重复执行目标语句。WHILELOOP-语法WHILEconditionLOOPsequence_of_statementsENDLOOP;WHILELOOP-示例DECLAREanumber(2):=10;BEGINWHILEa<20LOOPdbms_output.put_line('......
  • 基于TigerBot-13b训练其函数调用能力
    写在前面原生的tigerbot似乎并不支持函数调用,于是我来支持一下 数据集我在huggingface上找了个英文的数据集https://huggingface.co/datasets/sadmoseby/sample-function-call这里面包含了1k组的函数调用,这个数据集的特点如下:1.包含有单个/多个/没有函数调用的情形2.......
  • 无涯教程-PL/SQL - nested IF-THEN-ELSE函数
    在PL/SQL编程中,将IF-ELSE语句嵌套通常是合法的,这意味着您可以在其中使用一个IF或ELSEIF语句另一个IF或ELSEIF语句。嵌套IF-THEN-ELSE-语法IF(boolean_expression1)THEN--executeswhenthebooleanexpression1istrueIF(boolean_expression2)......
  • 无涯教程-PL/SQL - LOOP函数
    基本的循环结构在LOOP和ENDLOOP语句之间包含语句序列。BasicLOOP-语法PL/SQL编程语言中基本循环的语法是-LOOPSequenceofstatements;ENDLOOP;在此,一个或多个语句的序列可以是单个语句或语句块,需要EXIT语句或EXITWHEN语句才能中断循环。BasicLOOP-......