贵师大C语言备考

贵师大备考

字符串提纯

删除字符串里的所有 * 号,然后输出处理后的字符串

gets,puts函数

c 复制代码
#include<stdio.h>
void proc(char *a){
    char *p=a;//p指向a[0]
	while(*a){
		if(*a != '*'){
			*p=*a;//将字符串数组赋值到新的字符串数组中 
			p++;//指针往后移 
			a++;//字符串数组下标往后移 
		}else{
			a++;//字符串数组直接往后移, 
		}
	}
	*p ='\0';//必须加字符串结束符 
}
int main(){
	char str[81];
	gets(str);
	proc(str);
	puts(str);//printf("%s\n",str);	
}

以函数求两数和

sum()函数

c 复制代码
#include<stdio.h>
#define N 2000

int sum(int m,int n){
	int he;
	he = m+n;
	return he;
} 
int main(){	
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",sum(a,b));
	return 0;
}

求1-n的整数和

接收一个整数参数N,并返回整数和。

for循环

c 复制代码
#include<stdio.h>
#define N 2000

int main(){	
    int n,sum,a[N];
    printf("输入数组个数:");
    scanf("%d",&n);
    printf("输入数组:");
    for(int i=0;i<n;i++){
    	scanf("%d",&a[i]);
	}
    for(int i=0;i<n;i++){
    	sum=sum+a[i];
	}
    printf("%d",sum);
	return 0;
}

求数组所有元素的乘积

for循环

c 复制代码
#include<stdio.h>
#include<math.h>

int main(){	
    int arr[4]={1,2,3,4};
    int sum=1;
    for(int i=0;i<4;i++){
    	sum=sum*arr[i];
	}
    printf("%d",sum);
	return 0;
}

一个一个打印字符

while循环

c 复制代码
#include<stdio.h>
#include<math.h>

int main(){
    char *p="myname";
    while(*p){
    	printf("%c\n",*p);
    	p++;
	}
	return 0;
}

求阶乘

for循环

c 复制代码
#include<stdio.h>
#include<math.h>

void jc(int n){
	int i,sum=1;
    for(i=1;i<=n;i++){
    	sum*=i;
	}
	printf("%d",sum);
}
int main(){
	int b;
    scanf("%d",&b);
	jc(b);
	return 0;
}

求质数

质数是只能被1和自己整除的数

for循环

c 复制代码
#include<stdio.h>
#include<math.h>

void zs(int a){
    int j =1;
	for(int i=2;i<a/2;i++){
		if(a%i==0){
			printf("不是质数"); 
			j=0;
			break;
		}
	} 
    if(j==1){
			printf("是质数"); 
	}
}
int main(){
	int b,i;
    scanf("%d",&b);
	zs(b);
	return 0;
}

求二维数组中元素的最大值

将一个3 * 2的矩阵存入一个3 * 2的二维数组中,找出最大值以及

它的行下标和列下标,并输出该矩阵

双重循环

c 复制代码
#include<stdio.h>
#include<math.h>
int main()
{
	int row,col,i,j,max,a[3][2];
	for(i=0;i<3;i++){
		for(j=0;j<2;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<3;i++){
		for(j=0;j<2;j++){
			printf("%5d",a[i][j]);
		}
		printf("\n");
	}
	max=a[0][0];
	row=0;
	col=0;
	for(i=0;i<3;i++){
		for(j=0;j<2;j++){
			if(max<a[i][j]){
				max=a[i][j];
				row=i;
				col=j;
			}
		}
	}
	printf("a[%d][%d]max=%d",row,col,max);
}

计算相应的函数值Y

循环语句

c 复制代码
int main()
{
	float x,y;
	scanf("%f %f",&x,&y);
	if(x<2&&x>=1){
		y=x*x;
	} else if(x<3&&x>=2){
		y=-x;
	}else if(x<4&&x>=3){
		y=y/x;
	}else{
		y=1+x+x*x; 
	}
	printf("%f",y);
	return 0;
}

输出某月有几天

利用switch case实现键盘输入年份和月份,打印出某月份的总天数

循环语句

c 复制代码
int main()
{
int year,mouth;
scanf("%d %d",&year,&mouth);
	if(mouth%2!=0){
		mouth=1;
	}else if(mouth%2==0 && mouth!=2){
		mouth=3;
	}
if((year%400==0) || (year%4==0&&year%100!=0)){
switch(mouth){
	case 1:
		printf("这个月有31天");
		break;
	case 2:
		printf("这个月有29天");
		break;
	case 3:
		printf("这个月有30天");
		break;
} 	
}else{
switch(mouth){
	case 1:
		printf("这个月有31天");
		break;
	case 2:
		printf("这个月有28天");
		break;
	case 3:
		printf("这个月有30天");
		break;
} 		
}
return 0;
}

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

数组

c 复制代码
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    // 1. 设置返回数组的长度为2(两数之和固定返回两个下标)
    *returnSize = 2;
    // 2. 分配内存存储结果(长度为2的int数组),题目要求malloc
    int* result = (int*)malloc(sizeof(int) * 2);
    
    // 3. 修正双重循环逻辑:j从i+1开始,避免重复计算
    for (int i = 0; i < numsSize; i++) {
        for (int j = i + 1; j < numsSize; j++) {
            if (nums[i] + nums[j] == target) {
                // 4. 找到结果后赋值到malloc的数组中
                result[0] = i;
                result[1] = j;
                // 找到后直接返回,无需继续循环
                return result;
            }
        }
    }
    
    // 5. 题目保证有解,这里仅做容错:无结果时返回NULL,且设置返回长度为0
    *returnSize = 0;
    free(result);
    return NULL;
}

两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

链表

c 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
       struct ListNod
相关推荐
Yzzz-F4 小时前
Problem - 2146D1 - Codeforces &&Problem - D2 - Codeforces
算法
Kk.08024 小时前
力扣 LCR 084.全排列||
算法·leetcode·职场和发展
环黄金线HHJX.4 小时前
龙虾钳足启发的AI集群语言交互新范式
开发语言·人工智能·算法·编辑器·交互
Omics Pro4 小时前
虚拟细胞:开启HIV/AIDS治疗新纪元的关键?
大数据·数据库·人工智能·深度学习·算法·机器学习·计算机视觉
旖-旎5 小时前
分治(快速选择算法)(3)
c++·算法·leetcode·排序算法·快速选择
_日拱一卒5 小时前
LeetCode:合并区间
算法·leetcode·职场和发展
xiaoye-duck5 小时前
【C++:哈希表封装】哈希表封装 myunordered_map/myunordered_set 实战:底层原理 + 完整实现
数据结构·c++·散列表
汀、人工智能5 小时前
[特殊字符] 第3课:最长连续序列
数据结构·算法·数据库架构·图论·bfs·最长连续序列
少许极端5 小时前
算法奇妙屋(四十一)-贪心算法学习之路 8
学习·算法·贪心算法
Kethy__5 小时前
计算机中级-数据库系统工程师-数据结构-图
数据结构·算法·软考··数据库系统工程师·计算机中级