胡图图想学c语言呀3

##排序方法
#快速排序:#include <stdio.h>
void quickSort(int arr[],size_t left,size_t right){
if(left >= right){
return;
}
int key = arr[left];//标准key 放在合适的位置 使得左边的元素全部<=key 右边全部的元素>=key
int i=left,j=right;
while(i<j){
//右边找一个比key小的
while(i<j && arr[j]>=key){
–j;
}//循环退出arr[j]<key
arr[i] = arr[j];
while(i<j && arr[i]<=key){
++i;
}
arr[j] = arr[i];
}
arr[i] = key;
if(i-left>1){
quickSort(arr,left,i-1);
}
if(right-i>1){//right-i>1
quickSort(arr,i+1,right);
}
}
void quick(int arr[],size_t n){
quickSort(arr,0,n-1);
}
int main(){
int arr[] = {8,2,3,9,0,3,2,4,8,6,4,5,7,0,1,3,5};
quick(arr,sizeof(arr)/sizeof(arr[0]));
int i = 0;
for(i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
printf("%d “,arr[i]);
printf(”\n");
return 0;
}
#插入排序
#include <stdio.h>
void quick(int arr[],size_t left,size_t right){
if(left >= right){
return;
}
int key = arr[left];//基准值 把key放在合适的位置 使得其左边的元素全部<=key,右边所有的元素全部>=key key的位置就固定
int i=left,j=right;
while(i<j){
//从右边找一个比key小的放在arr[i]
for(;i<j&&arr[j]>=key;–j);
/while(i<j && arr[j]>=key){
–j;
}
/
arr[i] = arr[j];
//从左边找一个比key大的放在arr[j]
for(;i<j&&arr[i]<=key;++i);
/while(i<j && arr[i]<=key){
++i;
}
/
arr[j] = arr[i];
}
arr[i] = key;
if(i-left>1){
quick(arr,left,i-1);
}
if(right-i>1){
quick(arr,i+1,right);
}
}
void print(int arr[],size_t n){
int i = 0;
for(i=0;i<n;i++){
printf("%d “,arr[i]);
}
printf(”\n");
}
void insert(int arr[],size_t n){
//把一个数字插入到一个有序的数列中
//从第2个元素开始 逐次把该元素插入到前面的数列中使之有序
int i=0,j=0;
for(i=1;i<n;i++){//从第2个元素开始往前插入
int key = arr[i];//要往前插入的数
for(j=i-1;j>=0&&arr[j]>key;–j){
//arr[j]要比key大 往后移一格
arr[j+1] = arr[j];
}
//循环退出 arr[j]<=key 说明key放在arr[j]后面
arr[j+1] = key;
}
}
int main(){
int arr[] = {9,2,7,0,1,6,3,8,2,6,7,3,10,2,1,5,5};
int len = sizeof(arr)/sizeof(arr[0]);
//quick(arr,0,len-1);
insert(arr,len);
print(arr,len);
return 0;
}

##输出整数的十六进制和二进制:
#include <stdio.h>
void bin(int num){
int i = 0;
for(i=31;i>=0;–i){
printf("%d",(num>>i)&1);
}
printf("\n");
}
void hex(int num){
int i = 0;
printf(“0X”);
int zero = 0;
for(i=7;i>=0;–i){
int n = (num>>4*i)&0XF;//15
if(n<10){
if(n0 && zero0){
continue;
}
printf("%c",‘0’+n);
}else{
printf("%c",‘A’+(n-10));
}
zero = 1;
}
printf("\n");
}
int main(){
int n = 0;
scanf("%d",&n);
bin(n);
hex(n);
return 0;
}
##求偶数的质数之和:
4=1+3
#include <stdio.h>
void func(int arr[10]){
printf("%d\n",sizeof(arr));//4/8
int i = 0;
for(i=0;i<5;i++){
printf("%d “,arr[i]);
}
printf(”\n");
}
//size_t unsigned int
void print(int arr[],size_t len){
int i = 0;
for(i=0;i<len;i++){
printf("%d “,arr[i]);
}
printf(”\n");
}
int main(){
int arr[5] = {1,2,3,4,5};
printf("%d\n",sizeof(arr));//20
//func(arr);
print(arr,5);
int brr[5] = {2,2,3,9,9};
//func(brr);
print(brr,5);
int crr[10] = {1,2,2,3,3,4,4,4,5,6};
//func(crr);
print(crr,10);
return 0 ;
}

##最大子串和:
#include <stdio.h>
int sumOfArrChild(int arr[],size_t len){
//int max = 1<<31;//最大子串和
int max = arr[0];
int currsum = 0;//当前子串和
int i = 0;
for(i=0;i<len;i++){//遍历数组元素
currsum += arr[i];//记录当前子串和 累加当前元素
if(currsum > max){//跟之前记录的最大子串和比较
max = currsum;
}
if(currsum < 0){//如果累加上当前元素之后小于0 负数累加只会越来越小
currsum = 0;//累加下一个元素时
}
}
return max;
}
int main(){
unsigned int n = 0;
printf(“请输入数组长度:”);
scanf("%u",&n);
int arr[n];
printf(“请输入%d个整数:”,n);
int i = 0;
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
}
int s = sumOfArrChild(arr,n);
printf("%d\n",s);
return 0;
}

<think>好的,用户想用Python的turtle库绘制图图的图案。首先,我需要回忆一下图图的形象特征。图图耳朵、圆脸、短发,可能还有标志性的衣服,比如红色上衣和黄色裤子。 接下来,我得考虑如何用turtle库来绘制这些部分。根据引用中的例子,比如画哆啦A梦或者史迪仔,通常步骤是分部分绘制:头部、耳朵、眼睛、嘴巴、身体等。可能需要使用基本的图形如圆形、椭圆,以及线条组合。 然后,用户提供的引用里有几个关键点。引用[4]提到使用turtle的坐标定位和填充颜色,比如设置笔的粗细、速度,以及使用begin_fill和end_fill来填充颜色。这很重要,因为图图耳朵和衣服可能需要填充特定颜色。 另外,引用[3]中的代码展示了如何通过循环和坐标移动来绘制图像,可能需要用类似的方法处理图图的复杂部分,比如头发或衣服的褶皱。不过对于卡通形象,可能更多是基本形状的组合。 用户可能需要分步骤绘制每个部分,比如先画头部,再画耳朵,接着是眼睛、嘴巴,然后是身体。需要确定每个部分的坐标位置,使用turtle的goto函数移动位置,调整方向。 颜色方面,图图耳朵应该是肤色,衣服红色,裤子黄色。需要设置pencolor和fillcolor,并正确使用填充。 需要注意的是,turtle绘图是顺序执行的,所以结构要清晰,避免绘图顺序错误导致覆盖。比如先画后面的部分,再画前面的,或者调整笔的起落。 可能遇到的问题包括坐标定位不准,图形比例失调。需要多次调试,或者参考已有的卡通绘制代码结构,如引用[4]中的哆啦A梦例子,分函数处理每个部分。 最后,用户可能需要一个完整的代码示例,所以需要将各部分组合成一个类或多个函数,方便调用。同时,设置画布小和速度,加快绘制过程。 总结步骤: 1. 导入turtle库,设置画布和画笔属性。 2. 绘制头部(圆形或椭圆)。 3. 绘制耳朵(两个半圆或椭圆,填充肤色)。 4. 绘制眼睛、鼻子、嘴巴(圆形、弧线)。 5. 绘制身体和衣服(矩形或组合形状,填充颜色)。 6. 添加细节,如头发、衣服装饰。 7. 结束绘制,隐藏画笔。 需要参考引用中的代码结构,比如使用类来组织各部分,或者分函数绘制每个部分。同时,注意颜色填充和坐标定位的准确性。</think>以下是通过Python的turtle库绘制耳朵图图的详细步骤及代码实现: ### 一、基础设置与头部绘制 ```python import turtle as t # 初始化设置 t.setup(800, 600) # 设置画布尺寸 t.speed(8) # 设置绘制速度 t.pensize(3) # 画笔粗细 # 绘制头部(黄色圆脸) t.color("#FFD700", "#FFD700") # 金边黄色填充 t.begin_fill() t.circle(100) # 半径100像素的圆 t.end_fill() ``` ### 二、标志性耳朵绘制 ```python # 左耳(偏移坐标系) t.penup() t.goto(-130, 150) # 左耳起始坐标 t.pendown() t.color("#FFB6C1", "#FFB6C1") # 淡粉色 t.begin_fill() t.setheading(60) # 60度方向 t.circle(80, 180) # 半径80的半圆 t.end_fill() # 右耳(镜像对称) t.penup() t.goto(130, 150) # 右耳起始坐标 t.pendown() t.begin_fill() t.setheading(120) # 120度方向 t.circle(-80, 180) # 反向半圆 t.end_fill() ``` ### 三、五官绘制 ```python # 眼睛(椭圆绘制) def draw_eye(x, y): t.penup() t.goto(x, y) t.pendown() t.color("black") t.begin_fill() for _ in range(2): # 椭圆绘制技巧 t.circle(15, 90) t.circle(15//2, 90) t.end_fill() draw_eye(-40, 30) # 左眼 draw_eye(40, 30) # 右眼 # 嘴巴(弧线) t.penup() t.goto(-30, -20) t.pendown() t.right(90) t.circle(30, 180) # 半圆形嘴巴 ``` ### 四、身体与服饰 ```python # 红色上衣(梯形结构) t.penup() t.goto(-70, -100) t.pendown() t.color("red", "red") t.begin_fill() t.forward(140) # 底边 t.left(120) t.forward(80) # 右侧斜边 t.left(60) t.forward(60) # 顶部短边 t.left(60) t.forward(80) # 左侧斜边 t.end_fill() # 黄色短裤(三角形) t.penup() t.goto(-40, -180) t.pendown() t.color("#FFD700", "#FFD700") t.begin_fill() for _ in range(3): t.forward(80) t.left(120) t.end_fill() t.hideturtle() # 隐藏画笔 t.done() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值